{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/prop-types/index.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/styled-components/dist/styled-components.es.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/redux/es/createStore.js","../node_modules/redux/es/combineReducers.js","../node_modules/redux/es/bindActionCreators.js","../node_modules/redux/es/compose.js","../node_modules/redux/es/applyMiddleware.js","../node_modules/invariant/browser.js","../node_modules/emotion/dist/index.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-router/es/PatternUtils.js","../node_modules/react-router/es/computeChangedRoutes.js","../node_modules/react-router/es/AsyncUtils.js","../node_modules/react-router/es/TransitionUtils.js","../node_modules/react-router/es/isActive.js","../node_modules/react-router/es/PromiseUtils.js","../node_modules/react-router/es/getComponents.js","../node_modules/react-router/es/RouteUtils.js","../node_modules/react-router/es/matchRoutes.js","../node_modules/react-router/es/createTransitionManager.js","../node_modules/react-router/es/InternalPropTypes.js","../node_modules/react-router/es/getRouteParams.js","../node_modules/react-router/es/ContextUtils.js","../node_modules/react-router/es/RouterContext.js","../node_modules/react-router/es/RouterUtils.js","../node_modules/react-router/es/Router.js","../node_modules/react-router/es/PropTypes.js","../node_modules/react-router/es/Link.js","../node_modules/react-router/es/IndexLink.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router/es/IndexRoute.js","../node_modules/react-router/es/IndexRedirect.js","../node_modules/react-router/es/Route.js","../node_modules/react-router/es/match.js","../node_modules/react-router/es/applyRouterMiddleware.js","../node_modules/react-router/es/createRouterHistory.js","../node_modules/react-router/es/useRouterHistory.js","../node_modules/react-router/es/browserHistory.js","../node_modules/react-router/es/hashHistory.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/utils/PropTypes.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/create-react-class/index.js","../node_modules/moment/moment.js","../../src/core/Util.js","../../src/core/Class.js","../../src/core/Events.js","../../src/geometry/Point.js","../../src/geometry/Bounds.js","../../src/geo/LatLngBounds.js","../../src/geo/LatLng.js","../../src/geo/crs/CRS.js","../../src/geo/crs/CRS.Earth.js","../../src/geo/projection/Projection.SphericalMercator.js","../../src/geometry/Transformation.js","../../src/geo/crs/CRS.EPSG3857.js","../../src/layer/vector/SVG.Util.js","../../src/core/Browser.js","../../src/dom/DomEvent.Pointer.js","../../src/dom/DomEvent.DoubleTap.js","../../src/dom/DomUtil.js","../../src/dom/DomEvent.js","../../src/dom/PosAnimation.js","../../src/map/Map.js","../../src/control/Control.js","../../src/control/Control.Layers.js","../../src/control/Control.Zoom.js","../../src/control/Control.Scale.js","../../src/control/Control.Attribution.js","../../src/control/index.js","../../src/core/Handler.js","../../src/core/index.js","../../src/geometry/LineUtil.js","../../src/dom/Draggable.js","../../src/geometry/PolyUtil.js","../../src/geo/projection/Projection.LonLat.js","../../src/geo/projection/Projection.Mercator.js","../../src/geo/crs/CRS.EPSG3395.js","../../src/geo/crs/CRS.EPSG4326.js","../../src/geo/crs/CRS.Simple.js","../../src/geo/crs/index.js","../../src/layer/Layer.js","../../src/layer/LayerGroup.js","../../src/layer/FeatureGroup.js","../../src/layer/marker/Icon.js","../../src/layer/marker/Icon.Default.js","../../src/layer/marker/Marker.Drag.js","../../src/layer/marker/Marker.js","../../src/layer/vector/Path.js","../../src/layer/vector/CircleMarker.js","../../src/layer/vector/Circle.js","../../src/layer/vector/Polyline.js","../../src/layer/vector/Polygon.js","../../src/layer/GeoJSON.js","../../src/layer/ImageOverlay.js","../../src/layer/VideoOverlay.js","../../src/layer/SVGOverlay.js","../../src/layer/DivOverlay.js","../../src/layer/Popup.js","../../src/layer/Tooltip.js","../../src/layer/marker/DivIcon.js","../../src/layer/marker/index.js","../../src/layer/tile/GridLayer.js","../../src/layer/tile/TileLayer.js","../../src/layer/tile/TileLayer.WMS.js","../../src/layer/tile/index.js","../../src/layer/vector/Renderer.js","../../src/layer/vector/Canvas.js","../../src/layer/vector/SVG.VML.js","../../src/layer/vector/SVG.js","../../src/layer/vector/Renderer.getRenderer.js","../../src/layer/vector/Rectangle.js","../../src/layer/vector/index.js","../../src/layer/index.js","../../src/map/handler/Map.BoxZoom.js","../../src/map/handler/Map.DoubleClickZoom.js","../../src/map/handler/Map.Drag.js","../../src/map/handler/Map.Keyboard.js","../../src/map/handler/Map.ScrollWheelZoom.js","../../src/map/handler/Map.Tap.js","../../src/map/handler/Map.TouchZoom.js","../../src/map/index.js","../node_modules/react-dom/index.js","../node_modules/axios/lib/utils.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js","../node_modules/react-leaflet/es/context.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","../node_modules/warning/browser.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/lodash/_root.js","../node_modules/lodash/isArray.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","../node_modules/history/lib/PathUtils.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","../node_modules/lodash/_getNative.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","../node_modules/history/lib/LocationUtils.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/classnames/index.js","../node_modules/object-assign/index.js","../node_modules/webpack/buildin/global.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/isObjectLike.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js","../node_modules/history/lib/Actions.js","../node_modules/react-is/index.js","../node_modules/moment-timezone/index.js","../node_modules/history/lib/DOMUtils.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_toKey.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_for-of.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/history/lib/useQueries.js","../node_modules/history/lib/useBasename.js","../node_modules/axios/index.js","../node_modules/react-leaflet/es/utils/updateClassName.js","../node_modules/react-leaflet/es/MapEvented.js","../node_modules/react-leaflet/es/MapComponent.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/react-leaflet/es/MapLayer.js","../node_modules/is-plain-object/index.js","../node_modules/react-transition-group/index.js","../node_modules/history/lib/runTransitionHook.js","../node_modules/history/lib/createHistory.js","../node_modules/history/lib/ExecutionEnvironment.js","../node_modules/history/lib/BrowserProtocol.js","../node_modules/history/lib/DOMStateStorage.js","../node_modules/dom-helpers/util/inDOM.js","../node_modules/axios/lib/defaults.js","../node_modules/process/browser.js","../node_modules/webpack/buildin/module.js","../node_modules/moment/locale/cs.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_Map.js","../node_modules/lodash/isObject.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/keys.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/isSymbol.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js","../node_modules/react-transition-group/CSSTransition.js","../node_modules/symbol-observable/es/index.js","../node_modules/no-scroll/index.js","../node_modules/webpack/buildin/harmony-module.js","../node_modules/dom-helpers/query/isWindow.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/react-transition-group/Transition.js","../node_modules/react-transition-group/utils/PropTypes.js","../node_modules/react-transition-group/TransitionGroup.js","../node_modules/chart.js/dist/Chart.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/eq.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_castPath.js","../node_modules/babel-runtime/helpers/extends.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/babel-runtime/helpers/objectWithoutProperties.js","../node_modules/babel-runtime/helpers/classCallCheck.js","../node_modules/babel-runtime/helpers/possibleConstructorReturn.js","../node_modules/babel-runtime/helpers/typeof.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js","../node_modules/babel-runtime/helpers/inherits.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/core.get-iterator-method.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_classof.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine-all.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_an-instance.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_validate-collection.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/history/lib/createMemoryHistory.js","../node_modules/history/lib/createBrowserHistory.js","../node_modules/history/lib/createHashHistory.js","../node_modules/react-router-scroll/lib/index.js","../node_modules/redux-thunk/es/index.js","../node_modules/stylis/stylis.js","../node_modules/styled-components/node_modules/hoist-non-react-statics/index.js","../../src/close-icon.js","../../src/modal-manager.js","../../node_modules/style-inject/dist/style-inject.es.js","../../src/modal.js","../node_modules/react-minimalist-portal/lib/portal.js","../node_modules/focus-trap-react/dist/focus-trap-react.js","../node_modules/stylis-rule-sheet/index.js","../node_modules/raf/index.js","../node_modules/react-input-autosize/lib/AutosizeInput.js","../../../../../webpack/universalModuleDefinition","../webpack:/webpack/bootstrap ad04ceedbfe1663a194a","../../../../../react-day-picker.min.js","../webpack:/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","../../../../../src/DateUtils.js","../../../../../src/keys.js","../../../../../src/classNames.js","../../../../../src/Helpers.js","../../../../../src/LocaleUtils.js","../../../../../src/ModifiersUtils.js","../../../../../src/DayPicker.js","../../../../../src/umd.js","../../../../../src/Caption.js","../../../../../src/Navbar.js","../../../../../src/Month.js","../../../../../src/Weekdays.js","../../../../../src/Day.js","../../../../../src/Weekday.js","../../../../../src/DayPickerInput.js","../node_modules/react-day-picker/moment/index.js","../node_modules/react-chartjs-2/es/index.js","../node_modules/react-google-recaptcha/lib/recaptcha-wrapper.js","../node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.browser.js","../node_modules/@emotion/memoize/dist/memoize.esm.js","../node_modules/@emotion/unitless/dist/unitless.esm.js","../node_modules/@emotion/hash/dist/hash.esm.js","../node_modules/@emotion/stylis/dist/stylis.esm.js","../node_modules/create-emotion/dist/index.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-select/dist/react-select.esm.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/create-react-class/factory.js","../node_modules/query-string/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/history/lib/AsyncUtils.js","../node_modules/history/lib/RefreshProtocol.js","../node_modules/history/lib/HashProtocol.js","../node_modules/react-router-scroll/lib/ScrollContainer.js","../node_modules/react-router-scroll/lib/useScroll.js","../node_modules/scroll-behavior/lib/index.js","../node_modules/dom-helpers/events/off.js","../node_modules/dom-helpers/events/on.js","../node_modules/dom-helpers/query/scrollLeft.js","../node_modules/dom-helpers/query/scrollTop.js","../node_modules/dom-helpers/util/requestAnimationFrame.js","../node_modules/scroll-behavior/lib/utils.js","../node_modules/react-router-scroll/lib/ScrollBehaviorContext.js","../node_modules/react-router-scroll/lib/StateStorage.js","../node_modules/axios/lib/axios.js","../node_modules/is-buffer/index.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/btoa.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/isobject/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/focus-trap/index.js","../node_modules/tabbable/index.js","../node_modules/xtend/immutable.js","../node_modules/dom-helpers/class/addClass.js","../node_modules/dom-helpers/class/hasClass.js","../node_modules/dom-helpers/class/removeClass.js","../../src/performance-now.coffee","../node_modules/react-transition-group/ReplaceTransition.js","../node_modules/react-transition-group/utils/ChildMapping.js","../node_modules/moment-timezone/moment-timezone.js","../../../src/addons/MomentLocaleUtils.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/keyBy.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_baseAggregator.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/get.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/identity.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.js","../node_modules/react-google-recaptcha/lib/recaptcha.js","../node_modules/babel-runtime/core-js/object/assign.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/babel-runtime/core-js/symbol/iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/babel-runtime/core-js/symbol.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/babel-runtime/core-js/object/set-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-proto.js","../node_modules/babel-runtime/core-js/object/create.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/object/create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.create.js","../node_modules/react-async-script/lib/async-script-loader.js","../node_modules/babel-runtime/core-js/get-iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/get-iterator.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/core.get-iterator.js","../node_modules/babel-runtime/core-js/map.js","../node_modules/babel-runtime/node_modules/core-js/library/fn/map.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es6.map.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_collection-strong.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-call.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array-iter.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-species.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_collection.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_array-methods.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_array-species-create.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_array-species-constructor.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.map.to-json.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_collection-to-json.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_array-from-iterable.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.map.of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-collection-of.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/es7.map.from.js","../node_modules/babel-runtime/node_modules/core-js/library/modules/_set-collection-from.js","../node_modules/react-leaflet/es/Marker.js","../node_modules/react-leaflet/es/utils/omit.js","../node_modules/react-leaflet/es/Map.js","../node_modules/react-leaflet/es/GridLayer.js","../node_modules/react-leaflet/es/TileLayer.js","../node_modules/react-leaflet/es/Popup.js","../node_modules/react-leaflet/es/DivOverlay.js"],"names":["module","exports","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","arguments","length","forEach","getOwnPropertyDescriptors","defineProperties","defineProperty","_taggedTemplateLiteral","slice","freeze","raw","value","_uppercasePattern","hyphenate","string","replace","toLowerCase","msPattern","_StyleSheetManager$ch","hyphenateStyleName_1","objToCss","obj","prevKey","css","key","chunk","undefined","map","isPlainObject","join","flatten","chunks","executionContext","reduce","ruleSet","Array","isArray","concat","hasOwnProperty","styledComponentId","toString","stylis","Stylis","global","cascade","keyframe","prefix","compress","semicolon","stringifyRules","rules","selector","flatCSS","chars","split","charsLength","generateAlphabeticName","code","name","x","Math","floor","strings","_len","interpolations","_key","array","interp","i","interleave","SC_COMPONENT_ID","getNonce","__webpack_nonce__","classCallCheck","instance","Constructor","TypeError","createClass","target","props","descriptor","configurable","writable","protoProps","staticProps","prototype","_extends","assign","source","call","inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","objectWithoutProperties","indexOf","possibleConstructorReturn","self","ReferenceError","BrowserTag","el","isLocal","existingSource","this","ready","extractedComps","maybeCSS","existingComponents","match","componentId","matchIndex","_ref","nextComp","cssFromDOM","extractCompsFromCSS","size","components","acc","isFull","addComponent","replaceElement","comp","textNode","document","createTextNode","appendChild","inject","data","appendData","existingNames","getAttribute","SC_ATTR","setAttribute","nonce","toHTML","outerHTML","toReactElement","Error","clone","_this","newEl","cloneNode","parentNode","replaceChild","BrowserStyleSheet","tags","names","nodes","querySelectorAll","nodesLength","LOCAL_ATTR","innerHTML","attr","trim","StyleSheet","createElement","type","head","CONTEXT_KEY","clones","tagConstructor","hashes","deferredInjections","stylesCacheable","constructComponentTagMap","componentTags","tag","getName","hash","alreadyInjected","hasInjectedComponent","deferredInject","getOrCreateTag","deferredInjection","toReactElements","existingTag","lastTag","componentTag","createNewTag","newTag","reset","isServer","ServerStyleSheet","oldSheet","newSheet","get","StyleSheetManager","_Component","getChildContext","sheet","render","React","Children","only","children","Component","childContextTypes","PropTypes","oneOfType","instanceOf","isRequired","propTypes","ServerTag","concatenateCSS","styles","k","attrs","_attrs","dangerouslySetInnerHTML","__html","_this2","copy","collectStyles","closed","getStyleTags","splice","getStyleElement","ATTRIBUTE_REGEX","isCustomAttribute","RegExp","test","bind","isTag","isStyledComponent","getComponentName","displayName","determineTheme","fallbackTheme","defaultProps","isDefaultTheme","theme","escapeRegex","dashesAtEnds","escape","str","_ThemeProvider$childC","_ThemeProvider$contex","CHANNEL","CHANNEL_NEXT","CONTEXT_CHANNEL_SHAPE","shape","getTheme","func","subscribe","unsubscribe","ThemeProvider","unsubscribeToOuterId","componentWillMount","outerContext","context","outerTheme","broadcast","initialState","listeners","id","state","publish","nextState","listener","currentId","unsubID","createBroadcast","_babelHelpers$extends","_this3","subscriber","unsubscribeId","componentWillReceiveProps","nextProps","componentWillUnmount","passedTheme","contextTypes","STATIC_EXECUTION_CONTEXT","doHash","seed","m","h","currentIndex","UInt32","Umul32","UInt16","charCodeAt","pos","n","isStaticRules","rule","isHRMEnabled","hot","process","domElements","ComponentStyle","nameGenerator","isStatic","generateAndInjectStyles","styleSheet","lastClassName","existingName","generateName","_ComponentStyle","constructWithOptions","componentConstructor","options","templateFunction","withConfig","config","_constructWithOptions","StyledComponent","identifiers","BaseStyledComponent","_temp","args","generatedClassName","unsubscribeFromContext","buildExecutionContext","_constructor","componentStyle","warnTooManyClasses","styledContext","setState","nextTheme","_generatedClassName","oldState","_this4","innerRef","_constructor2","isTargetTag","className","Boolean","baseProps","ref","propsForElement","propName","createStyledComponent","_StyledComponent$cont","_options$displayName","_options$componentId","_displayName","parentComponentId","nr","generateId","_options$ParentCompon","ParentComponent","extendingRules","_ParentComponent","withComponent","previousComponentId","optionsToCopy","newComponentId","newOptions","rulesFromOptions","newRules","_StyledComponent","styled","_keyframes","_injectGlobal","styledComponent","domElement","_styled","freeSelf","Symbol","freeGlobal","Function","objectProto","nativeObjectToString","symToStringTag","toStringTag","getRawTag","isOwn","unmasked","result","objectToString","baseGetTag","overArg","getPrototype","transform","arg","getPrototypeOf","isObjectLike","funcProto","funcToString","objectCtorString","proto","Ctor","ActionTypes","INIT","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","isSubscribed","index","dispatch","action","replaceReducer","nextReducer","$$observable","outerSubscribe","observer","observeState","next","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","random","substring","assertReducerShape","hasChanged","_i","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","funcs","a","b","applyMiddleware","middlewares","chain","store","_dispatch","middlewareAPI","middleware","condition","format","c","d","f","error","argIndex","framesToPop","_createEmotion","createEmotion","injectGlobal","flush","hydrate","cx","merge","getRegisteredStyles","keyframes","caches","_assertThisInitialized","escapeRegExp","CompiledPatternsCache","compilePattern","pattern","regexpSource","paramNames","tokens","lastIndex","matcher","exec","_compilePattern","matchPattern","pathname","charAt","_compilePattern2","matchedPath","remainingPathname","substr","paramValues","v","decodeURIComponent","getParamNames","formatPattern","params","parenCount","splatIndex","parenHistory","token","paramValue","len","splat","invariant","encodeURI","parenText","pop","curTokenIdx","tokensSubset","nextParenIdx","encodeURIComponent","computeChangedRoutes","prevState","prevRoutes","routes","nextRoutes","leaveRoutes","changeRoutes","enterRoutes","parentIsLeaving","route","isLeaving","path","some","paramName","routeParamsChanged","reverse","isNew","paramsChanged","loopAsync","turns","work","callback","currentTurn","isDone","sync","hasNext","doneArgs","done","mapAsync","values","doneCount","item","PendingHooks","_classCallCheck","hooks","add","hook","remove","has","clear","getTransitionUtils","enterHooks","changeHooks","createTransitionHook","asyncArity","pendingHooks","isSync","transitionHook","runTransitionHooks","iter","redirectInfo","location","runEnterHooks","onEnter","getEnterHooks","runChangeHooks","onChange","getChangeHooks","runLeaveHooks","onLeave","_typeof","iterator","deepEqual","every","p","String","queryIsActive","query","activeQuery","isActive","indexOnly","currentLocation","currentPathname","pathIsActive","matched","routeIsActive","isPromise","then","getComponents","component","getComponent","componentReturn","getComponentsForRoute","isValidChild","object","isValidElement","isReactChildren","createRouteFromReactElement","element","childRoutes","createRoutesFromReactChildren","parentRoute","createRoutes","getChildRoutes","partialNextState","createParams","childRoutesReturn","getIndexRoute","indexRoute","indexRoutesReturn","onChildRoutes","pathless","childRoute","err","assignParams","matchRouteDeep","_match$routes","matchRoutes","unshift","hasAnyProperties","createTransitionManager","history","_getTransitionUtils","finishMatch","_computeChangedRoutes","finishEnterHooks","handleErrorOrRedirect","removeListenBeforeHooksForRoute","RouteGuid","getRouteID","__id__","RouteHooks","getRouteHooksForRoutes","beforeUnloadHook","message","unlistenBefore","unlistenBeforeUnload","routeID","_isActive","createLocation","listenBeforeLeavingRoute","thereWereNoRouteHooks","listenBefore","listenBeforeUnload","listen","historyListener","redirectLocation","getCurrentLocation","falsy","componentName","go","goBack","goForward","elementType","arrayOf","getRouteParams","routeParams","contextProviderShape","eventIndex","number","makeContextName","prefixUnsafeLifecycleMethods","forwardRef","ContextSubscriber","_contextTypes","_config2","contextName","lastRenderedEventIndexKey","handleContextUpdateKey","unsubscribeKey","getInitialState","componentDidMount","_setState","_setState2","UNSAFE_componentWillReceiveProps","RouterContext","createReactClass","mixins","_childContextTypes","_config","listenersKey","eventIndexKey","subscribeKey","componentDidUpdate","UNSAFE_componentWillMount","ContextProvider","router","getDefaultProps","_props","reduceRight","prop","isValidElementType","elements","createRouterObject","transitionManager","assignRouterState","setRouteLeaveHook","onError","onUpdate","matchContext","Router","handleError","_createRouterObject","_createTransitionManager","_unlisten","_state","_props2","_objectWithoutProperties","propType","routerShape","search","resolveToLocation","to","Link","activeStyle","activeClassName","onlyActiveOnIndex","bool","onClick","current","style","handleClick","event","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","button","isLeftClickEvent","preventDefault","toLocation","href","createHref","isEmptyObject","Redirect","statics","_createRouteFromReactElement","from","routeIndex","getRoutePattern","parentPattern","IndexRoute","Route","withContext","renderRouterContext","renderRouteComponent","makeCreateElement","baseCreateElement","previous","renderProps","canUseDOM","window","createRouterHistory","createHistory","useQueries","useBasename","useRouterHistory","createBrowserHistory","createHashHistory","_defineProperty","_setPrototypeOf","_inheritsLoose","subscriptionShape","trySubscribe","tryUnsubscribe","notifyNestedSubs","storeShape","createProvider","storeKey","_Provider$childContex","subscriptionKey","Provider","_proto","CLEARED","nullListeners","notify","Subscription","parentSub","onStateChange","addNestedSub","createListenerCollection","hotReloadingVersion","dummyState","noop","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","shouldHandleStateChanges","_ref2$storeKey","_ref2$withRef","withRef","connectOptions","_objectWithoutPropertiesLoose","version","WrappedComponent","JSON","stringify","wrappedComponentName","selectorFactoryOptions","Connect","renderCount","propsMode","setWrappedInstance","initSelector","initSubscription","_ref3","subscription","run","shouldComponentUpdate","forceUpdate","getWrappedInstance","wrappedInstance","sourceSelector","makeSelectorStateful","notifyNestedSubsOnComponentDidUpdate","addExtraProps","withExtras","hoistStatics","hasOwn","is","y","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","pure","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","factory","ReactNoopUpdateQueue","updater","hookCallback","setHookCallback","input","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","Date","arr","fn","res","arrLen","extend","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","val","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","argLen","stack","deprecations","deprecateSimple","isFunction","set","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","targetLength","forceSign","absNumber","abs","zerosToFill","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","hh","dd","w","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","parts","matches","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","dest","src","F","lastId","stamp","_leaflet_id","throttle","lock","wrapperFn","later","setTimeout","wrapNum","range","includeMax","falseFn","formatNum","num","digits","splitWords","setOptions","getParamString","existingUrl","uppercase","templateRe","template","emptyImageUrl","getPrefixed","lastTime","timeoutDefer","timeToCall","requestFn","requestAnimationFrame","cancelFn","cancelAnimationFrame","clearTimeout","requestAnimFrame","immediate","cancelAnimFrame","Class","checkDeprecatedMixinEvents","includes","Mixin","Util.isArray","Events","NewClass","initialize","callInitHooks","parentProto","__super__","Util.create","Util.extend","_initHooks","_initHooksCalled","include","mergeOptions","addInitHook","init","on","types","_on","Util.splitWords","off","_off","_events","typeListeners","newListener","ctx","Util.falseFn","_firingCount","fire","propagate","listens","sourceTarget","_propagateEvent","_eventParents","once","handler","Util.bind","addEventParent","Util.stamp","removeEventParent","layer","propagatedFrom","addEventListener","removeEventListener","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","Point","trunc","toPoint","Bounds","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","toLatLng","lon","point","_add","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","sqrt","equals","contains","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","bounds","min2","max2","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","sw2","ne2","sw","_southWest","ne","_northEast","pad","bufferRatio","heightBuffer","widthBuffer","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","precision","Util.formatNum","Earth","distance","wrap","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","cos","PI","CRS","latLngToPoint","latlng","zoom","projectedPoint","projection","project","scale","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","log","LN2","getProjectedBounds","infinite","wrapLng","Util.wrapNum","wrapLat","wrapLatLngBounds","center","newCenter","latShift","lngShift","R","latlng1","latlng2","rad","lat1","lat2","sinDLat","sin","sinDLon","atan2","earthRadius","SphericalMercator","MAX_LATITUDE","atan","exp","Transformation","_b","_c","toTransformation","EPSG3857","EPSG900913","svgCreate","createElementNS","pointsToPath","rings","len2","Browser.svg","documentElement","ie","ielt9","edge","navigator","webkit","userAgentContains","android","android23","webkitVer","userAgent","androidStock","opera","chrome","gecko","safari","phantom","opera12","win","platform","ie3d","webkit3d","WebKitCSSMatrix","gecko3d","any3d","L_DISABLE_3D","mobile","orientation","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","pointer","touch","L_NO_TOUCH","DocumentTouch","mobileOpera","mobileGecko","retina","devicePixelRatio","screen","deviceXDPI","logicalXDPI","passiveEvents","supportsPassiveOption","opts","canvas","getContext","svg","createSVGRect","vml","div","firstChild","behavior","adj","POINTER_DOWN","Browser.msPointer","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","_pointers","_pointerDocListener","addPointerListener","_addPointerStart","_addPointerMove","_addPointerEnd","removePointerListener","onDown","MSPOINTER_TYPE_TOUCH","pointerType","DomEvent.preventDefault","_handlePointer","_globalPointerDown","_globalPointerMove","_globalPointerUp","pointerId","touches","changedTouches","onMove","MSPOINTER_TYPE_MOUSE","buttons","onUp","_touchstart","Browser.pointer","_touchend","_pre","addDoubleTapListener","last","doubleTap","delay","onTouchStart","isPrimary","delta","onTouchEnd","cancelBubble","newTouch","Browser.passiveEvents","passive","removeDoubleTapListener","touchstart","touchend","dblclick","disableTextSelection","enableTextSelection","_userSelect","_outlineElement","_outlineStyle","TRANSFORM","testProp","TRANSITION","TRANSITION_END","getElementById","getStyle","currentStyle","defaultView","getComputedStyle","tagName","container","parent","removeChild","toFront","lastChild","toBack","insertBefore","hasClass","classList","getClass","addClass","classes","setClass","removeClass","Util.trim","baseVal","correspondingElement","setOpacity","opacity","_setOpacityIE","filterName","filters","Enabled","Opacity","setTransform","Browser.ie3d","setPosition","_leaflet_pos","Browser.any3d","left","top","getPosition","DomEvent.on","DomEvent.off","userSelectProperty","disableImageDrag","enableImageDrag","preventOutline","tabIndex","restoreOutline","outline","getSizedParentNode","offsetWidth","offsetHeight","body","getScale","rect","getBoundingClientRect","width","height","boundingClientRect","addOne","eventsKey","removeOne","browserFiresNativeDblClick","Browser.edge","Browser.safari","mouseSubst","mouseenter","mouseleave","wheel","originalHandler","Browser.touch","isExternalTarget","attachEvent","detachEvent","stopPropagation","originalEvent","_stopped","disableScrollPropagation","disableClickPropagation","fakeStop","returnValue","stop","getMousePosition","clientX","clientY","clientLeft","clientTop","wheelPxFactor","Browser.win","Browser.chrome","Browser.gecko","getWheelDelta","wheelDeltaY","deltaY","deltaMode","deltaX","deltaZ","wheelDelta","detail","skipEvents","events","related","relatedTarget","PosAnimation","newPos","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","DomUtil.getPosition","_startTime","_animate","_step","_complete","_animId","Util.requestAnimFrame","elapsed","_runFrame","_easeOut","progress","DomUtil.setPosition","Util.cancelAnimFrame","Map","crs","minZoom","maxZoom","layers","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","Util.setOptions","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","_zoomAnimated","DomUtil.TRANSITION","Browser.mobileOpera","_createAnimProxy","_proxy","DomUtil.TRANSITION_END","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","animate","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","setZoom","zoomIn","zoomOut","setZoomAround","getZoomScale","viewHalf","centerOffset","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","padding","paddingBR","paddingBottomRight","getBoundsZoom","Infinity","paddingOffset","swPoint","nePoint","fitBounds","fitWorld","panTo","panBy","getZoom","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","noMoveStart","DomUtil.addClass","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetCenter","targetZoom","startZoom","w0","w1","u1","rho","rho2","sq","sinh","cosh","tanh","r0","easeOut","start","S","frame","_flyToFrame","_move","getScaleZoom","_moveEnd","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","halfPixelBounds","paddedBounds","invalidateSize","oldSize","_lastCenter","newSize","oldCenter","debounceMoveend","locate","_locateOptions","timeout","watch","_handleGeolocationError","onResponse","_handleGeolocationResponse","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","coords","latitude","longitude","accuracy","timestamp","addHandler","HandlerClass","enable","_containerId","_container","DomUtil.remove","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","DomUtil.create","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","inside","nw","se","boundsSize","snap","scalex","scaley","_size","clientWidth","clientHeight","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","DomEvent.getMousePosition","mouseEventToLayerPoint","mouseEventToLatLng","DomUtil.get","_onScroll","_fadeAnimated","Browser.retina","Browser.ielt9","position","DomUtil.getStyle","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","onOff","_handleDOMEvent","_onMoveEnd","scrollTop","scrollLeft","_findEventTargets","targets","isHover","srcElement","dragging","_simulated","_draggableMoved","DomEvent.isExternalTarget","DomEvent.skipped","DomUtil.preventOutline","_fireDOMEvent","_mouseEvents","synth","isMarker","getLatLng","_radius","containerPoint","bubblingMouseEvents","Util.indexOf","enabled","moved","boxZoom","disable","whenReady","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","right","DomUtil.removeClass","mapPane","DomUtil.TRANSFORM","DomUtil.setTransform","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","z","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","createMap","Control","_map","removeControl","addControl","addTo","onAdd","corner","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","control","corners","_controlContainer","createCorner","vSide","hSide","Layers","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_section","acceptableHeight","offsetTop","collapse","DomEvent.disableClickPropagation","DomEvent.disableScrollPropagation","section","Browser.android","link","_layersLink","title","DomEvent.stop","_baseLayersList","_separator","_overlaysList","overlay","setZIndex","DomUtil.empty","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","display","_createRadioElement","checked","radioHtml","radioFragment","label","hasLayer","defaultChecked","layerId","_onInputClick","holder","inputs","addedLayers","removedLayers","addLayer","disabled","_expand","_collapse","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","html","zoomControl","Scale","maxWidth","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","_updateScale","maxMiles","miles","feet","maxFeet","text","ratio","pow10","Attribution","_attributions","attributionControl","getAttribution","addAttribution","setPrefix","removeAttribution","attribs","prefixAndAttribs","attribution","Handler","_enabled","addHooks","removeHooks","_lastCode","START","END","mousedown","pointerdown","MSPointerDown","MOVE","Draggable","clickTolerance","dragStartTarget","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","DomUtil.hasClass","which","DomUtil.disableImageDrag","DomUtil.disableTextSelection","_moving","first","sizedParent","DomUtil.getSizedParentNode","_startPoint","_parentScale","DomUtil.getScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_animRequest","_lastEvent","_updatePosition","DomUtil.enableImageDrag","DomUtil.enableTextSelection","simplify","tolerance","sqTolerance","_simplifyDP","_reducePoints","pointToSegmentDistance","_sqClosestPointOnSegment","closestPointOnSegment","markers","Uint8Array","_simplifyDPStep","newPoints","sqDist","maxSqDist","reducedPoints","prev","_sqDist","clipSegment","useLastCode","codeOut","newCode","codeA","_getBitCode","codeB","_getEdgeIntersection","dx","dy","dot","isFlat","_flat","clipPolygon","clippedPoints","edges","_code","LineUtil._getBitCode","LineUtil._getEdgeIntersection","LonLat","Mercator","R_MINOR","con","ts","tan","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","method","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","clearLayers","invoke","getLayer","getLayers","zIndex","layerGroup","FeatureGroup","setStyle","bringToFront","bringToBack","featureGroup","Icon","popupAnchor","tooltipAnchor","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","img","_createImg","_setIconStyles","sizeOption","shadowAnchor","iconAnchor","marginLeft","marginTop","icon","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","MarkerDrag","marker","_marker","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","origin","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","shadow","_shadow","_latlng","oldLatLng","Marker","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","draggable","latLng","_initIcon","update","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","getIcon","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","mouseover","_bringToFront","mouseout","_resetZIndex","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","opt","DomUtil.setOpacity","_getPopupAnchor","_getTooltipAnchor","Path","stroke","color","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_updateBounds","_bringToBack","_path","_project","_clickTolerance","CircleMarker","radius","setRadius","getRadius","_point","r2","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","circleMarker","Circle","legacyOptions","_mRadius","half","latR","bottom","lngR","acos","circle","Polyline","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","minDistance","minPoint","closest","LineUtil._sqClosestPointOnSegment","jLen","_parts","halfDist","segDist","dist","_rings","addLatLng","_defaultShape","_convertLatLngs","LineUtil.isFlat","flat","_projectLatlngs","_rawPxBounds","projectedBounds","ring","_clipPoints","segment","LineUtil.clipSegment","_simplifyPoints","LineUtil.simplify","_updatePoly","part","LineUtil.pointToSegmentDistance","polyline","LineUtil._flat","Polygon","area","clipped","PolyUtil.clipPolygon","polygon","GeoJSON","geojson","addData","feature","features","geometries","geometry","coordinates","geometryToLayer","asFeature","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","pointToLayerFn","markersInheritOptions","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","toGeoJSON","geoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","json","geoJson","ImageOverlay","crossOrigin","errorOverlayUrl","url","_url","_image","_initImage","styleOpts","DomUtil.toFront","DomUtil.toBack","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","onload","onerror","_overlayOnError","image","errorUrl","imageOverlay","VideoOverlay","autoplay","loop","keepAspectRatio","muted","vid","onloadeddata","sourceElements","getElementsByTagName","sources","videoOverlay","video","SVGOverlay","svgOverlay","DivOverlay","_source","_removeTimeout","getContent","_content","setContent","content","visibility","_updateContent","_updateLayout","isOpen","_prepareOpen","node","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","Popup","minWidth","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","openOn","openPopup","popup","DomEvent.stopPropagation","closeOnClick","closePopupOnClick","preclick","_close","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","_onCloseButtonClick","whiteSpace","scrolledClass","marginBottom","containerHeight","containerWidth","layerPos","containerPos","_popupHandlersAdded","click","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","keyCode","Tooltip","permanent","sticky","tooltip","closeTooltip","_setPosition","subX","subY","tooltipPoint","tooltipWidth","tooltipHeight","openTooltip","bindTooltip","_tooltip","_initTooltipInteractions","unbindTooltip","_tooltipHandlersAdded","_moveTooltip","_openTooltip","mousemove","toggleTooltip","isTooltipOpen","setTooltipContent","getTooltip","DivIcon","bgPos","Element","backgroundPosition","divIcon","Default","GridLayer","tileSize","Browser.mobile","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","viewprereset","_invalidateAll","Util.throttle","createTile","getTileSize","compare","edgeZIndex","nextFrame","willPrune","tile","loaded","fade","active","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_updateLevels","Number","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","x2","y2","z2","coords2","_tileCoordsToKey","animating","_setView","_clampZoom","noPrune","tileZoom","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","translate","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","halfSize","tileRange","tileCenter","queue","margin","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","Browser.android23","WebkitBackfaceVisibility","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","gridLayer","TileLayer","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","_onTileRemove","noRedraw","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","Util.template","tilePoint","complete","Util.emptyImageUrl","Browser.androidStock","tileLayer","TileLayerWMS","defaultWmsParams","service","request","transparent","wmsParams","realRetina","_crs","_wmsVersion","projectionKey","bbox","setParams","tileLayerWMS","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","ev","_updateTransform","currentCenterPoint","_center","topLeftOffset","Canvas","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","_updateDashArray","order","_order","_drawLast","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","_dashArray","_clear","clearRect","save","restore","beginPath","clip","_drawing","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","clickedLayer","DomEvent.fakeStop","_fireEvent","moving","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","candidateHoveredLayer","Browser.canvas","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","Browser.vml","SVG","zoomstart","_onZoomStart","_rootGroup","_svgSize","removeAttribute","_getPaneRenderer","_createRenderer","preferCanvas","Rectangle","_boundsToLatLngs","rectangle","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","worldWidth","halfWidth","newX1","newX2","newX","noInertia","ease","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","_addHooks","_removeHooks","_focused","docEl","scrollTo","panDelta","_panKeys","codes","_zoomKeys","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","DomEvent.getWheelDelta","debounce","_lastMousePos","_timer","_performZoom","d2","d3","d4","tap","tapTolerance","Tap","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","touchmove","simulatedEvent","createEvent","_simulatedClick","initMouseEvent","dispatchEvent","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","moveFn","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","isBuffer","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","assignValue","thisArg","core","__e","uid","USE_SYMBOL","leafletContext","createContext","LeafletConsumer","Consumer","LeafletProvider","withLeaflet","WithLeafletComponent","leaflet","LeafletComponent","hoistNonReactStatics","__g","root","hide","PROTOTYPE","$export","own","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","expProto","C","virtual","U","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","Attributes","it","__esModule","createPath","parsePath","getQueryStringValueFromPath","stripQueryStringValueFromPath","addQueryStringValueToPath","_warning","_parsePath","_parsePath2","extractPath","hashIndex","searchIndex","basename","createDesc","baseIsNative","getValue","locationsAreEqual","statesAreEqual","createQuery","_invariant2","_interopRequireDefault","_PathUtils","_Actions","default","POP","typeofA","keysofA","keysofB","aFunction","IObject","defined","reactIs","REACT_STATICS","contextType","getDerivedStateFromError","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","classNames","appendClass","parseValue","newClass","propIsEnumerable","propertyIsEnumerable","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","g","PUSH","REPLACE","tz","load","supportsHistory","ua","supportsGoWithoutReloadUsingHash","supportsPopstateOnHashchange","isExtraneousPopstateEvent","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","entry","eq","nativeCreate","getNative","isKeyable","__data__","isSymbol","bitmap","$keys","enumBugKeys","px","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","contentWindow","open","write","lt","close","Properties","def","TAG","stat","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","ITERATOR","step","iterFn","componentWillUpdate","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","_queryString","_runTransitionHook","_runTransitionHook2","_LocationUtils","defaultStringifyQuery","defaultParseQueryString","parse","stringifyQuery","parseQueryString","decodeQuery","encodeQuery","queryString","newLocation","addBasename","prependBasename","pname","normalizedBasename","normalizedPathname","splitClassName","prevClassName","nextClassName","cls","DomUtil","removeClassName","addClassName","EVENTS_RE","MapEvented","_leafletEvents","extractLeafletEvents","bindLeafletEvents","_prevProps","leafletElement","fireLeafletEvent","MapComponent","_MapEvented","getOptions","toPropertyKey","_defineProperties","MapLayer","_MapComponent","createLeafletElement","updateLeafletElement","_fromProps","_toProps","layerContainer","contextValue","Fragment","isObjectObject","ctor","prot","_CSSTransition","_ReplaceTransition","_TransitionGroup","_Transition","Transition","TransitionGroup","ReplaceTransition","CSSTransition","_AsyncUtils","getUserConfirmation","pushLocation","replaceLocation","keyLength","pendingLocation","beforeListeners","allKeys","updateLocation","nextLocation","transitionTo","ok","prevPath","prevIndex","nextIndex","createKey","startListener","_DOMUtils","_DOMStateStorage","_ExecutionEnvironment","PopStateEvent","HashChangeEvent","needsHashchangeListener","_createLocation","historyState","readState","confirm","handlePopState","handleUnpoppedHashChange","updateState","saveState","pushState","replaceState","QuotaExceededErrors","QuotaExceededError","QUOTA_EXCEEDED_ERR","SecurityErrors","SecurityError","sessionStorage","removeItem","setItem","getItem","_default","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","webpackPolyfill","paths","moment","standalone","plural","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","baseIsEqualDeep","baseIsEqual","bitmask","customizer","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","arrayLikeKeys","baseKeys","isArrayLike","reIsDeepProp","reIsPlainProp","cof","toInteger","shared","SHARED","mode","copyright","$at","iterated","_t","LIBRARY","redefine","Iterators","$iterCreate","setToStringTag","BUGGY","KEYS","VALUES","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","TO_STRING_TAG","DOMIterables","Collection","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","meta","KEY","NEED","fastKey","getWeak","onFreeze","wksExt","$Symbol","newObj","desc","_interopRequireWildcard","_addClass","_removeClass","_react","_React$Component","appearing","getClassNames","removeClasses","onEntering","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","isStringClassNames","_this$getClassNames6","ponyfill","scrollbarSize","isOn","doc","pageYOffset","scrollHeight","innerHeight","dummyScroller","getScrollbarSize","scroll","noScroll","toggle","originalModule","nodeType","parentWindow","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","Promise","resolve","reject","requestData","requestHeaders","loadEvent","xDomain","XDomainRequest","onprogress","ontimeout","auth","username","password","Authorization","paramsSerializer","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","cancel","abort","send","enhanceError","__CANCEL__","Cancel","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactDom","_reactLifecyclesCompat","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","findDOMNode","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","_this$props","childProps","excluded","sourceKeys","child","cloneElement","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","handleExited","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","createCommonjsModule","getCjsExportFromNamespace","colorName","conversions","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","comparativeDistance","rdif","gdif","bdif","diffc","reversed","currentClosestKeyword","currentClosestDistance","t1","t2","t3","smin","lmin","hi","q","sl","vmin","wh","bl","hr","ansi","mult","rem","colorString","char","integer","hue","chroma","mg","buildGraph","graph","models","deriveBFS","fromModel","adjacents","adjacent","wrapConversion","toModel","cur","conversion","wrapRaw","wrappedFn","wrapRounded","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","rgba","per","hexAlpha","alpha","hsla","vals","hexDouble","reverseNames","Color","valid","setValues","red","lightness","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","color1","w2","spaces","maxes","getValues","space","capped","chans","sname","svalues","chartjsColor","isValidKey","helpers","isNullOrUndef","valueOrDefault","defaultValue","valueAtIndexOrDefault","each","loopable","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","tval","sval","_mergerIf","mergeIf","merger","dst","extensions","me","ChartElement","Surrogate","_deprecated","scope","helpers_core","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","chart","roundedRect","moveTo","drawPoint","rotation","xOffset","yOffset","cornerRadius","drawImage","lineTo","SQRT1_2","_isPointInArea","epsilon","clipArea","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","fontSize","fontFamily","lineHeight","fontStyle","info","cacheable","exports$2","_factorize","log10","exponent","LOG10E","powerOf10","helpers_math","getRtlAdapter","rectX","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","getLtrAdapter","_itemWidth","helpers$1","easing","math","rtl","overrideTextDirection","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","interpolate","view","actual","c0","c1","configuration","_type","hidden","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","animation","onProgress","onComplete","core_animations","animations","addAnimation","lazy","startTime","cancelAnimation","findIndex","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","_chartjs","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","destroy","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","updateElement","buildOrUpdateElements","resyncElements","_configure","_cachedDataOpts","easingValue","draw","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","hover","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","numMeta","numData","insertElements","count","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawFullCircleBorders","vm","inner","fullCircles","drawBorder","borderAlign","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","swap","orig","v2","parseBorderSkipped","borderSkipped","horizontal","parseBorderWidth","maxW","maxH","boundingRects","border","outer","skipX","skipY","element_rectangle","rects","fillRect","Arc","Line","deprecated","valueOrDefault$3","computeMinSampleSize","pixels","curr","_length","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","computeFlexCategoryTraits","percent","end","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","_getStacks","metasets","_getMatchingVisibleMetas","stacked","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","list","legend","generateLabels","controller","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","polarArea","pie","radar","getRelativePosition","native","parseVisibleItems","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","sortByWeight","wrapBoxes","boxes","box","layoutBoxes","setLayoutDims","layouts","layout","fullWidth","availableWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateDims","newWidth","newHeight","getPadding","boxPadding","outerWidth","outerHeight","sizes","handleMaxPadding","updatePos","change","getMargins","marginForPositions","positions","fitBoxes","refit","changed","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","removeBox","layoutItem","configure","layoutOptions","availableHeight","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","platform_dom","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","pointerenter","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","renderWidth","initial","displayWidth","aspectRatio","displayHeight","eventListenerOptions","supports","nativeEvent","fromNativeEvent","throttled","ticking","createDiv","createResizer","maxSize","resizer","shrink","onScroll","watchForRender","expando","renderProxy","animationName","reflow","offsetParent","unwatchForRender","addResizeListener","maintainAspectRatio","removeResizeListener","injectCSS","rootNode","containsStyles","platform_dom$2","disableCSSInjection","_ensureLoaded","getRootNode","host","releaseContext","proxies","addEvent","removeEvent","implementation","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","combinedBodyLength","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","caretPosition","getCaretPosition","x3","y3","ptX","ptY","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","hasId","positionIsHorizontal","compare2Level","l1","l2","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","_bufferedRender","instances","retinaScale","bindEvents","resize","initToolTip","silent","getMaximumWidth","getMaximumHeight","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","Controller","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","boundingRect","paddingLeft","paddingTop","paddingRight","paddingBottom","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","ch","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","thing","nestedThing","longest","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","logarithmic","remain","valueOrDefault$a","sample","numItems","increment","getPixelForGridLine","validIndex","lineValue","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","widths","heights","offsets","widestLabelSize","highestLabelSize","major","minor","valueAt","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","factors","factor","evenMajorSpacing","spacing","getMajorIndices","skipMajors","tick","majorStart","majorEnd","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","lineSpace","tickPadding","isRotated","angleRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","avgMajorSpacing","maxTicksLimit","_tickSize","numMajorIndices","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","gz","core_scale","isNullOrUndef$1","defaultConfig","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","niceMin","niceMax","numSpaces","MIN_SPACING","stepSize","maxNumSpaces","maxTicks","rmin","rmax","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","DEFAULT_MIN","DEFAULT_MAX","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","minVal","maxVal","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","steps","UNITS","sorter","arrayUnique","getMin","getMax","buildLookupTable","timestamps","distribution","table","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","span","toTimestamp","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","unitStepSize","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","labelsAdded","dataLabels","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tooltipFormat","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","_id","amount","filler","mappers","boundary","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","cy","computeBoundary","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","dimension","blockSize","itemHeight","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","_adapters","Animation","animationService","Interaction","scaleService","Ticks","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","baseIsArguments","isArguments","stubFalse","freeExports","freeModule","Buffer","reIsUint","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","isLength","srcValue","castPath","toKey","isKey","stringToPath","_assign","_assign2","toIObject","arrayIndexOf","_typeof2","_typeof3","_iterator2","_symbol2","hiddenKeys","pIE","gOPD","_setPrototypeOf2","_create2","classof","getIteratorMethod","ARG","T","tryGet","safe","forbiddenField","TYPE","symbolObservablePonyfill","observable","_createHistory2","canGo","storage","memo","createStateStorage","BrowserProtocol","RefreshProtocol","Protocol","forceRefresh","listenerCount","stopListener","unlisten","HashProtocol","addLeadingSlash","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","queryKey","hashType","pathCoder","useScroll","ScrollContainer","_ScrollContainer3","_useScroll3","createThunkMiddleware","extraArgument","thunk","withExtraArgument","nullptn","formatptn","colonptn","cursorptn","transformptn","animationptn","propertiesptn","elementptn","selectorptn","andptn","escapeptn","invalidptn","keyframeptn","plcholdrptn","readonlyptn","beforeptn","afterptn","tailptn","whiteptn","pseudoptn","writingptn","supportsptn","propertyptn","selfptn","pseudofmt","dimensionptn","imgsrcptn","moz","SEMICOLON","CLOSEBRACES","OPENBRACES","OPENPARENTHESES","CLOSEPARENTHESES","OPENBRACKET","CLOSEBRACKET","NEWLINE","CARRIAGE","TAB","AT","SPACE","AND","DASH","UNDERSCORE","STAR","COMMA","COLON","SINGLEQUOTE","DOUBLEQUOTE","FOWARDSLASH","GREATERTHAN","PLUS","TILDE","NULL","FORMFEED","VERTICALTAB","KEYFRAME","MEDIA","SUPPORTS","PLACEHOLDER","READONLY","IMPORT","CHARSET","DOCUMENT","PAGE","column","preserve","plugged","should","POSTS","PREPS","UNKWN","PROPS","BLCKS","ATRUL","unkwn","keyed","nscopealt","nscope","compile","depth","bracket","comment","parentheses","quote","tail","trail","peak","counter","atrule","pseudo","caret","insert","invert","eof","eol","delimited","select","vendor","isolate","selectors","third","group","declare","parents","at","minify","use","ns","isGetOwnPropertySymbolsAvailable","customStatics","CloseIcon","closeIconSize","closeIconSvgPath","onClickCloseIcon","closeIcon","xmlns","viewBox","modals","modal","insertAt","cssText","Modal","showPortal","modalManager","blockScroll","handleKeydown","unblockScroll","shouldClose","onOverlayClick","closeOnOverlayClick","onClose","onEscKeyDown","closeOnEsc","handleOpen","handleClose","showCloseIcon","focusTrapped","focusTrapOptions","overlayId","modalId","closeIconId","transitionEnter","appearActive","transitionEnterActive","enterActive","transitionExit","exitActive","transitionExitActive","handleEntered","overlayCenter","handleClickOverlay","onMouseDown","handleModalEvent","onMouseUp","clickOutsideDeactivates","handleClickCloseIcon","_createClass","_propTypes2","_reactDom2","useCreatePortal","createPortal","isBrowser","Portal","_possibleConstructorReturn","_inherits","renderLayer","unmountComponentAtNode","unstable_renderSubtreeIntoContainer","createFocusTrap","checkedProps","FocusTrap","setNode","previouslyFocusedElement","activeElement","specifiedFocusTrapOptions","tailoredFocusTrapOptions","returnFocusOnDeactivate","optionName","focusTrap","_createFocusTrap","activate","paused","pause","returnFocus","deactivate","unpause","elementProps","insertRule","delimiter","needle","toSheet","block","vendors","raf","caf","frameDuration","_now","cp","cancelled","handle","_react2","sizerStyle","INPUT_PROPS_BLACKLIST","copyStyles","fontWeight","letterSpacing","textTransform","isIE","AutosizeInput","inputRef","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","inputId","copyInputStyles","updateInputWidth","onAutosize","inputStyles","scrollWidth","newInputWidth","placeholder","placeholderIsMinWidth","extraWidth","injectStyles","sizerValue","previousValue","currentValue","wrapperStyle","inputStyle","boxSizing","inputProps","cleanInputProps","inputClassName","renderStyles","any","__WEBPACK_EXTERNAL_MODULE_0__","__webpack_require__","moduleId","installedModules","modules","addMonths","newDate","isSameDay","isSameMonth","isDayBefore","isDayAfter","isPastDay","today","isFutureDay","tomorrow","isDayBetween","addDayToRange","isDayInRange","getWeekNumber","LEFT","UP","RIGHT","DOWN","ENTER","ESC","interactionDisabled","navBar","navButtonPrev","navButtonNext","navButtonInteractionDisabled","caption","weekdaysRow","weekNumber","todayButton","selected","outside","cancelEvent","getFirstDayOfMonth","resultDate","getModifiersFromProps","modifiers","selectedDays","disabledDays","getFirstDayOfWeekFromProps","localeUtils","getFirstDayOfWeek","isRangeOfDates","getMonthsDiff","getWeekArray","fixedWeeks","dayArray","weekArray","firstWeek","outsideDate","lastExtraWeek","extraWeek","startOfMonth","getDayNodes","outsideClassName","defaultClassNames","nodeListToArray","nodeList","_classNames2","_classNames","formatDay","toDateString","formatMonthTitle","MONTHS","formatWeekdayShort","WEEKDAYS_SHORT","formatWeekdayLong","WEEKDAYS_LONG","getMonths","dayMatchesModifier","modifier","daysOfWeek","dayOfWeek","getModifiersForDay","modifiersObj","modifierName","ModifiersUtils","LocaleUtils","DateUtils","DayPicker","_Caption2","_Navbar2","_Month2","_Weekday2","Helpers","dayPicker","showNextMonth","allowNextMonth","deltaMonths","pagedNavigation","numberOfMonths","nextMonth","currentMonth","showMonth","showPreviousMonth","allowPreviousMonth","previousMonth","handleKeyDown","persist","showPreviousYear","showNextYear","onKeyDown","handleDayKeyDown","focusNextDay","focusPreviousDay","focusPreviousWeek","focusNextWeek","onDayClick","handleDayClick","onDayKeyDown","enableOutsideDaysClick","handleOutsideDayClick","handleTodayButtonClick","onTodayButtonClick","getCurrentMonthFromProps","initialMonth","fromMonth","diffInMonths","toMonth","allowMonth","canChangeMonth","onMonthChange","allowYearChange","dayNodes","dayNode","dayNodeIndex","focusLastDayOfMonth","focusFirstDayOfMonth","nextMonthDayNodeIndex","previousMonthDayNodes","navbarElement","attributes","getNextNavigableMonth","getPreviousNavigableMonth","showPreviousButton","showNextButton","onNextClick","onPreviousClick","reverseMonths","renderTodayButton","aria-label","containerProps","onFocus","onBlur","renderNavbar","renderMonths","renderFooter","showOutsideDays","showWeekNumbers","showWeekDays","renderDay","renderWeek","weekdayElement","captionElement","VERSION","Input","_LocaleUtils2","Caption","handleKeyUp","role","aria-live","onKeyUp","Navbar","handleNextClick","handlePreviousClick","handleNextKeyDown","handlePreviousKeyDown","previousClickHandler","nextClickHandler","previousKeyDownHandler","nextKeyDownHandler","shouldShowPrevious","shouldShowNext","previousClassName","previousButton","nextButton","_Weekdays2","_Day2","Month","monthNumber","propModifiers","dayModifiers","isOutside","modifiersStyles","ariaLabel","ariaDisabled","ariaSelected","onDayFocus","onMouseEnter","onDayMouseEnter","onMouseLeave","onDayMouseLeave","onDayMouseDown","onDayMouseUp","onDayTouchEnd","onDayTouchStart","weekdaysLong","onCaptionClick","onWeekClick","captionProps","Weekdays","Day","propNames","nextPropNames","nextProp","nextModifiers","aria-disabled","aria-selected","Weekday","OverlayComponent","selectedDay","overlayWrapper","defaultParse","HIDE_TIMEOUT","_DayPicker2","DayPickerInput","daypicker","clickTimeout","hideTimeout","inputBlurTimeout","inputFocusTimeout","getInitialStateFromProps","showOverlay","hideAfterDayClick","handleInputClick","handleInputFocus","handleInputBlur","handleInputChange","handleInputKeyDown","handleInputKeyUp","handleMonthChange","handleOverlayFocus","handleOverlayBlur","newState","formatDate","dayPickerProps","prevMonth","overlayBlurTimeout","parseDate","typedValue","getInitialMonthFromProps","onDayChange","onDayPickerShow","onDayPickerHide","hideOnDayClick","overlayHasFocus","hideDayPicker","showDayPicker","keepFocus","clickUnselectsDay","selectedDayIdx","Overlay","overlayComponent","renderOverlay","Scatter","Bubble","Polar","Radar","HorizontalBar","Bar","Pie","Doughnut","_isEqual","_keyBy","sourceSymbolKeys","enumerableOnly","sym","_objectSpread","_createSuper","Derived","hasNativeReflectConstruct","Reflect","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","NODE_ENV","ChartComponent","_super","chartInstance","onElementsClick","renderChart","destroyChart","updateChart","_this$props2","nextData","transformDataProp","shadowDataProp","saveCurrentDatasets","isDev","usingCustomKeyProvider","datasetKeyProvider","getLabelAsKey","multipleDatasets","shouldWarn","getCurrentDatasets","memoizeDataProps","currentDatasets","nextDatasets","checkDatasets","currentDatasetsIndexed","pid","otherProps","rest","_this$props3","_this$props4","handleOnClick","_React$Component2","_super2","_React$Component3","_super3","_this5","_React$Component4","_super4","_this6","_React$Component5","_super5","_this7","_ref4","_React$Component6","_super6","_this8","_ref5","_React$Component7","_super7","_this9","_ref6","_React$Component8","_super8","_this10","_ref7","_React$Component9","_super9","_this11","_ref8","_React$Component10","_super10","_this12","_ref9","_recaptcha2","_reactAsyncScript2","callbackName","URL","recaptchaOptions","globalName","exposeFuncs","HIDDEN_TEXTAREA_STYLE","SIZING_STYLE","computedStyleCache","hiddenTextarea","forceHiddenStyles","calculateNodeHeight","uiTextNode","useCache","minRows","maxRows","nodeStyling","sizingStyle","paddingSize","borderSize","nodeInfo","calculateNodeStyling","minHeight","singleRowHeight","valueRowCount","rowCount","TextareaAutosize","_onRef","_onChange","_controlled","_resizeComponent","nodeHeight","_uid","useCacheForDOMMeasurements","_resizeLock","onHeightChange","_resizeListener","purgeCache","memoize","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","orphans","tabSize","widows","WebkitLineClamp","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","murmurhash2_32_gc","stylis_min","K","I","J","N","ca","A","H","X","da","ea","Y","ha","ia","Z","ja","ka","aa","ba","la","ma","na","oa","hyphenateRegex","processStyleName","styleName","processStyleValue","unitless","classnames","toAdd","makeStyleTag","isSpeedy","ctr","injected","speedy","sourceMap","styleSheets","ownerNode","sheetForTag","cssRules","_tag","__SECRET_EMOTION__","stylisOptions","insertionPlugin","stylisRuleSheet","currentSourceMap","registered","inserted","stylisPlugins","handleInterpolation","interpolation","couldBeSelectorInterpolation","__emotion_styles","createStringFromObject","stylesWithLabel","objectToStringCache","WeakMap","labelPattern","createStyles","stringMode","identifierName","hashString","createClassName","registeredStyles","rawClassName","hydrateSingleId","emotion","ids","_len2","_key2","safeIsNaN","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","applyPrefixToName","cssKey","cleanValue","isDocumentElement","getScrollTop","animatedScrollTo","currentTime","animateScroll","isTouchCapable","getMenuPlacement","menuEl","placement","shouldScroll","isFixedPosition","scrollParent","excludeStaticParent","overflowRx","parentElement","overflowY","overflowX","getScrollParent","defaultState","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","coercePlacement","MenuPlacer","_getPrototypeOf2","maxMenuHeight","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","getPlacement","placerProps","getUpdatedProps","noticeCSS","_ref5$theme","baseUnit","colors","neutral40","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","getStyles","innerProps","LoadingMessage","MenuPortal","_Component2","_getPrototypeOf3","appendTo","controlElement","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","keyList","hasProp","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","$$typeof","exportedEqual","diacritics","letters","stripDiacritics","trimString","defaultStringify","option","A11yText","DummyInput","background","NodeResolver","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","maxTouchPoints","activeScrollLocks","ScrollLock","capture","accountForScrollbars","touchScrollTarget","targetStyle","originalStyles","currentPadding","adjustedPadding","innerWidth","listenerOptions","ScrollBlock","_PureComponent","isEnabled","blurSelectInput","getScrollTarget","PureComponent","ScrollCaptor","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","isTop","cancelScroll","handleEventDelta","touchStart","startListening","stopListening","onWheel","onTouchMove","ScrollCaptorSwitch","instructionsAriaMessage","isSearchable","isMulti","isDisabled","valueEventAriaMessage","isOptionDisabled","ValueContainer","Svg","focusable","CrossIcon","DownChevron","baseCSS","isFocused","_ref2$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","keyframesName","keyframesInjected","LoadingDot","animationDelay","animationTimingFunction","borderRadius","verticalAlign","LoadingIndicator","isRtl","isHidden","MultiValueGeneric","MultiValueContainer","MultiValueLabel","MultiValueRemove","MultiValue","removeProps","selectProps","Container","Label","Remove","containerInnerProps","labelInnerProps","removeInnerProps","cropWithEllipsis","ClearIndicator","menuIsOpen","DropdownIndicator","Group","Heading","headingProps","GroupHeading","cleanProps","IndicatorsContainer","IndicatorSeparator","Menu","cn","menu","MenuList","Option","isSelected","Placeholder","SelectContainer","SingleValue","defaultComponents","defaultStyles","clearIndicator","pointerEvents","_ref$theme","alignItems","neutral5","neutral0","neutral10","primary","borderStyle","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","groupHeading","indicatorsContainer","alignSelf","indicatorSeparator","_ref3$theme","loadingIndicator","_ref4$theme","marginRight","loadingMessage","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","userSelect","WebkitTapHighlightColor","primary50","neutral50","singleValue","valueContainer","defaultTheme","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionLabel","getOptionValue","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","tabSelectsValue","instanceId","Select","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","controlRef","focusedOptionRef","menuListRef","components$$1","focusInput","blurInput","newValue","actionMeta","onInputChange","inputIsHiddenAfterUpdate","onMenuClose","clearFocusValueOnUpdate","isOptionSelected","setValue","announceAriaLiveSelection","removedValue","lastSelectedValue","instancePrefix","_this$state","blockOptionHover","openMenu","openAfterFocus","clearValue","HTMLElement","isComposing","initialTouchX","initialTouchY","userIsDragging","onControlMouseDown","onClearIndicatorMouseDown","onDropdownIndicatorMouseDown","inputValue","currentTarget","onMenuOpen","_this$props5","announceAriaLiveContext","_this$props6","hideSelectedOptions","_this$props7","isClearable","_this$state2","focusValue","removeValue","popValue","selectOption","focusOption","cacheComponents","_selectValue","_menuOptions","buildMenuOptions","startListeningComposition","startListeningToTouch","autoFocus","_this$props8","getNextFocusedValue","getNextFocusedOption","_this$props9","scrollToFocusedOptionOnUpdate","focusedEl","menuRect","focusedRect","overScroll","scrollIntoView","stopListeningComposition","stopListeningToTouch","_this$props10","_this$state3","openAtIndex","selectedIndex","_this$props11","_this$state4","focusedIndex","nextFocus","_this$state5","classNamePrefix","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","_this$props12","formatOptionLabel","onCompositionStart","onCompositionEnd","_props$inputValue","toOption","shouldHideSelectedOptions","onOptionHover","onSelect","optionId","getElementId","onMouseMove","onMouseOver","itemIndex","hasGroups","groupId","_this$state7","_this$props13","focusedValueMsg","valueFocusAriaMessage","focusedOptionMsg","optionFocusAriaMessage","resultsMsg","screenReaderMessage","resultsAriaMessage","countOptions","_this$props14","getInputRef","onInputBlur","onInputFocus","readOnly","ariaAttributes","_this$commonProps","commonProps","autoCapitalize","autoComplete","autoCorrect","spellCheck","_this$components","_this$props15","_this$state8","isOptionFocused","_this$props16","onClearIndicatorTouchEnd","_this$props17","_this$components2","onDropdownIndicatorTouchEnd","_this$components3","Menu$$1","MenuList$$1","MenuPortal$$1","LoadingMessage$$1","NoOptionsMessage$$1","_this$state9","_this$props18","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","getFocusedOptionRef","hasOptions","headingId","_message","menuPlacementProps","menuElement","_ref6$placerProps","onMenuMouseDown","onMenuMouseMove","getMenuListRef","_this$props19","_value","constructAriaLiveMessage","_this$components4","_this$props20","getCommonProps","renderLiveRegion","getControlRef","onControlTouchEnd","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","defaultProps$1","defaultInputValue","defaultMenuIsOpen","manageState","SelectComponent","_class","StateManager","callProp","getProp","defaultProps$2","cacheOptions","makeAsyncSelect","Async","lastRequest","loadedInputValue","loadedOptions","passEmptyOptions","optionsCache","loadOptions","loader","compareOption","optionValue","optionLabel","defaultProps$3","allowCreateWhileLoading","createOptionPosition","formatCreateLabel","isValidNewOption","selectOptions","getNewOptionData","__isNew__","makeCreatableSelect","Creatable","onCreateOption","newOption","valueArray","newOptionData","newActionMeta","Fade","Tag","_ref$duration","inProp","entering","entered","exiting","exited","Collapse","rafID","getTransition","getWidth","AnimatedMultiValue","AnimatedPlaceholder","AnimatedSingleValue","AnimatedValueContainer","makeAnimated","AnimatedComponents","index$1","StrictMode","Profiler","Suspense","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isPureReactComponent","__self","__source","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","_payload","_init","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","Set","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","pa","qa","setAttributeNS","xlinkHref","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","nodeName","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","db","defaultSelected","gb","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","nodeValue","qb","gridArea","lineClamp","rb","sb","tb","ub","menuitem","br","col","embed","keygen","track","wbr","vb","wb","xb","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","fc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","delete","tc","vc","wc","lanePriority","unstable_runWithPriority","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","vd","Ad","pageX","pageY","getModifierState","zd","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Meta","Shift","Pd","Qd","repeat","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","Vd","targetTouches","Xd","Yd","wheelDeltaX","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","le","email","tel","oe","pe","qe","re","te","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","compareDocumentPosition","Ne","HTMLIFrameElement","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","gf","hf","je","ke","jf","kf","mf","nf","of","pf","qf","sf","previousSibling","tf","vf","wf","xf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","pending","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","Mg","Ng","Og","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","unstable_observedBits","unmount","form","Vj","vk","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","supportsFiber","flushSync","unstable_batchedUpdates","unstable_createPortal","performance","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","symbol","objectOf","oneOf","exact","checkPropTypes","AsyncMode","ConcurrentMode","ContextConsumer","Lazy","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","emptyObject","_invariant","MIXINS_KEY","ReactComponent","injectedMixins","ReactClassInterface","updateComponent","ReactClassStaticInterface","RESERVED_SPEC_KEYS","mixSpecIntoComponent","createMergedResultFunction","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassMixin","spec","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","IsMountedPreMixin","__isMounted","IsMountedPostMixin","ReactClassComponent","pairs","autoBindKey","bindAutoBindMethods","strictUriEncode","objectAssign","encode","keysSorter","extract","arrayFormat","accumulator","parserForArrayFormat","encoderForArrayFormat","val2","_BrowserProtocol","getHashPath","replaceHashPath","prevLocation","handleHashChange","encodedPath","updateHash","pushHashPath","scrollKey","shouldUpdateScroll","scrollBehavior","prevRouterProps","routerProps","registerElement","unregisterElement","shouldUpdateScrollOrConfig","createScrollBehavior","_shouldUpdateScrollOr","defaultCreateScrollBehavior","_ScrollBehaviorContext2","_scrollBehavior2","_scrollLeft","_scrollTop","_requestAnimationFrame","_utils","ScrollBehavior","addTransitionHook","stateStorage","_restoreScrollRestoration","_oldScrollRestoration","scrollRestoration","_onWindowScroll","_ignoreScrollEvents","_saveWindowPositionHandle","_saveWindowPosition","_windowScrollTarget","_this$_windowScrollTa","xTarget","yTarget","_cancelCheckWindowScroll","_savePosition","_checkWindowScrollPosition","_checkWindowScrollHandle","scrollToTarget","_numWindowScrollAttempts","_stateStorage","_getCurrentLocation","_shouldUpdateScroll","isMobileSafari","_scrollElements","_removeTransitionHook","scrollElement","savePositionHandle","_saveElementPosition","saveElementPosition","_updateElementScroll","_this$_scrollElements","updateScroll","prevContext","_updateWindowScroll","startIgnoringScrollEvents","stopIgnoringScrollEvents","_getScrollTarget","_this$_scrollElements2","_getDefaultScrollTarget","_getSavedScrollTarget","targetElement","getElementsByName","_target","eventName","_isWindow","pageXOffset","compatRaf","_inDOM","req","getKey","rafKey","_StateStorage2","ScrollBehaviorContext","_initialiseProps","StateStorage","getFallbackLocationKey","getStateKey","stateKeyBase","Axios","createInstance","axios","instanceConfig","CancelToken","isCancel","all","promises","spread","readFloatLE","isSlowBuffer","_isBuffer","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","interceptors","baseURL","interceptor","fulfilled","rejected","normalizedName","serializedParams","parsed","originURL","msie","urlParsingNode","resolveURL","protocol","hostname","port","requestURL","expires","domain","secure","cookie","toGMTString","handlers","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","relativeURL","executor","resolvePromise","jsx","jsxs","tabbable","xtend","listeningFocusTrap","userOptions","querySelector","escapeDeactivates","firstTabbableNode","lastTabbableNode","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","trap","activateOptions","updateTabbableNodes","onActivate","addListeners","removeListeners","deactivateOptions","onDeactivate","tryFocus","getInitialFocusNode","checkFocusIn","checkPointerDown","checkClick","checkKey","getNodeForOption","isFocusable","Document","stopImmediatePropagation","isEscapeEvent","isTabEvent","checkTab","tabbableNodes","isSelectableInput","candidateSelectors","candidateSelector","msMatchesSelector","webkitMatchesSelector","candidateTabindex","regularTabbables","orderedTabbables","untouchabilityChecker","UntouchabilityChecker","candidates","includeContainer","isNodeMatchingSelectorTabbable","getTabindex","documentOrder","sortOrderedTabbables","isNodeMatchingSelectorFocusable","isInput","isRadio","radioSet","getCheckedRadio","isTabbableRadio","isNonTabbableRadio","isHiddenInput","isUntouchable","isTabbable","focusableCandidateSelector","tabindexAttr","isContentEditable","elementDocument","hasDisplayNone","nodeComputedStyle","Node","ELEMENT_NODE","predicate","find","computedStyle","_hasClass","replaceClassName","origClass","classToRemove","_args","handleEnter","handleLifecycle","handleEntering","_len3","_key3","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","_React$Children$toArr","mergeChildMappings","nextChildMapping","hasPrev","prevChild","mapFn","getValueForKey","nextKeysPending","pendingKeys","childMapping","nextKey","pendingNextKey","define","cachedGuess","zones","links","countries","guesses","logError","momentVersion","charCodeToInt","unpackBase60","whole","fractional","multiplier","arrayToInt","mapIndices","indices","unpack","untils","intToUntil","abbrs","population","Zone","packedString","Country","country_name","zone_names","OffsetAt","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","checkedOffsets","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","nextOffset","startYear","lastOffset","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","addLink","normal0","normal1","needsOffset","isUnixTimestamp","unpacked","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","old","abbrWrap","_z","resetZoneWrap","defaultZone","setDefault","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","assocIndexOf","LARGE_ARRAY_SIZE","isMasked","toSource","reIsHostCtor","reIsNative","coreJsData","maskSrcKey","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","setCacheAdd","setCacheHas","mapToArray","setToArray","symbolProto","symbolValueOf","byteLength","byteOffset","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","resIndex","baseTimes","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","typedArrayTags","freeProcess","isPrototype","nativeKeys","DataView","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","baseAssignValue","keyBy","createAggregator","arrayAggregator","baseAggregator","baseIteratee","initializer","baseEach","baseForOwn","createBaseEach","baseFor","createBaseFor","fromRight","eachFunc","baseMatches","baseMatchesProperty","identity","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","isStrictComparable","hasIn","baseGet","memoizeCapped","rePropName","reEscapeChar","subString","resolver","memoized","Cache","baseToString","arrayMap","symbolToString","baseHasIn","hasPath","hasFunc","baseProperty","basePropertyDeep","orient","x0","y0","ln","vx","vy","r1","datalabels","MODEL_KEY","toTextLines","parseFont","positioner","tw","tx","ty","drawFrame","bgColor","drawText","getPositioner","getScaleOrigin","modelize","afterDatasetUpdate","afterDatasetDraw","_extends3","_objectWithoutProperties3","_classCallCheck3","_possibleConstructorReturn3","_inherits3","ReCAPTCHA","handleExpired","handleRecaptchaRef","grecaptcha","widgetId","getResponse","getWidgetId","execute","_executeRequested","onExpired","explicitRender","captcha","sitekey","tabindex","stoken","badge","elem","DESCRIPTORS","getKeys","gOPS","$assign","aLen","isEnum","toAbsoluteIndex","IS_INCLUDES","$this","TO_STRING","ObjectProto","addToUnscopables","_k","Arguments","$fails","wks","wksDefine","enumKeys","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","findChild","setSymbolDesc","protoDesc","$defineProperty","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","windowNames","getWindowNames","check","buggy","$Object","_getIterator3","_map2","scriptURL","AsyncScriptLoader","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","idCount","childComponent","SCRIPT_MAP","observers","errored","asyncScriptLoaderHandleLoad","script","async","callObserverFuncAndRemoveObserver","observersMap","_iterator","_isArray","obsKey","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","onreadystatechange","asyncScriptOnLoad","removeOnUnmount","allScripts","_isArray2","_i2","_isArray3","_i3","_iterator3","funcToExpose","_getComponent","getIterator","strong","validate","MAP","getEntry","redefineAll","anInstance","forOf","$iterDefine","setSpecies","SIZE","getConstructor","IS_MAP","ADDER","callbackfn","setStrong","ArrayProto","SPECIES","fails","IS_WEAK","IS_ADDER","asc","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","speciesConstructor","COLLECTION","mapping","_MapLayer","LeafletMarker","popupContainer","fromProps","toProps","omit","keysToOmit","OTHER_PROPS","normalizeCenter","viewport","onViewportChange","_updating","onViewportChanged","LeafletMap","boundsOptions","useFlyTo","updateClassName","getZoomPanOptions","shouldUpdateCenter","shouldUpdateBounds","getFitBoundsOptions","zoomPanOptions","_ready","bindContainer","LeafletGridLayer","_GridLayer","LeafletTileLayer","_DivOverlay","onOpen","LeafletPopup","_this$props$leaflet","popupopen","onPopupOpen","popupclose","onPopupClose","onRender"],"mappings":"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,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,yBACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,mBACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,6DACR,CACDp4J,KAAM,IACNo4J,QAAS,+EACR,CACDp4J,KAAM,IACNo4J,QAAS,2FACR,CACDp4J,KAAM,KACNo4J,QAAS,mBACR,CACDp4J,KAAM,KACNo4J,QAAS,mBACR,CACDp4J,KAAM,IACNo4J,QAAS,2LACR,CACDp4J,KAAM,IACNo4J,QAAS,2CACR,CACDp4J,KAAM,IACNo4J,QAAS,iGACR,CACDp4J,KAAM,IACNo4J,QAAS,2FACR,CACDp4J,KAAM,IACNo4J,QAAS,+HACR,CACDp4J,KAAM,IACNo4J,QAAS,qCACR,CACDp4J,KAAM,IACNo4J,QAAS,2FACR,CACDp4J,KAAM,IACNo4J,QAAS,mHACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,uDACR,CACDp4J,KAAM,IACNo4J,QAAS,uGACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,yQACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,mEACR,CACDp4J,KAAM,IACNo4J,QAAS,2CACR,CACDp4J,KAAM,IACNo4J,QAAS,6GACR,CACDp4J,KAAM,IACNo4J,QAAS,6GACR,CACDp4J,KAAM,IACNo4J,QAAS,iGACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,mNACR,CACDp4J,KAAM,IACNo4J,QAAS,uDACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,mEACR,CACDp4J,KAAM,IACNo4J,QAAS,qCACR,CACDp4J,KAAM,IACNo4J,QAAS,iGACR,CACDp4J,KAAM,IACNo4J,QAAS,2FACR,CACDp4J,KAAM,IACNo4J,QAAS,yNACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,yBACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,mBACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,6DACR,CACDp4J,KAAM,IACNo4J,QAAS,qFACR,CACDp4J,KAAM,IACNo4J,QAAS,2FACR,CACDp4J,KAAM,KACNo4J,QAAS,mBACR,CACDp4J,KAAM,IACNo4J,QAAS,iMACR,CACDp4J,KAAM,IACNo4J,QAAS,2CACR,CACDp4J,KAAM,IACNo4J,QAAS,iGACR,CACDp4J,KAAM,IACNo4J,QAAS,iGACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,+HACR,CACDp4J,KAAM,IACNo4J,QAAS,2CACR,CACDp4J,KAAM,IACNo4J,QAAS,2FACR,CACDp4J,KAAM,IACNo4J,QAAS,yHACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,uDACR,CACDp4J,KAAM,IACNo4J,QAAS,6GACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,yQACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM,IACNo4J,QAAS,mEACR,CACDp4J,KAAM,IACNo4J,QAAS,2CACR,CACDp4J,KAAM,IACNo4J,QAAS,6GACR,CACDp4J,KAAM,IACNo4J,QAAS,mHACR,CACDp4J,KAAM,IACNo4J,QAAS,uGACR,CACDp4J,KAAM,KACNo4J,QAAS,aACR,CACDp4J,KAAM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","file":"static/js/2.83296224.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","function _taggedTemplateLiteral(e, t) {\n  return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n    raw: {\n      value: Object.freeze(t)\n    }\n  }));\n}\nexport { _taggedTemplateLiteral as default };","import isPlainObject from 'is-plain-object';\nimport Stylis from 'stylis';\nimport React, { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport hoistStatics from 'hoist-non-react-statics';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n *   > hyphenate('backgroundColor')\n *   < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate$2(string) {\n  return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nvar hyphenate_1 = hyphenate$2;\n\nvar hyphenate = hyphenate_1;\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nvar hyphenateStyleName_1 = hyphenateStyleName;\n\n//      \nvar objToCss = function objToCss(obj, prevKey) {\n  var css = Object.keys(obj).filter(function (key) {\n    var chunk = obj[key];\n    return chunk !== undefined && chunk !== null && chunk !== false && chunk !== '';\n  }).map(function (key) {\n    if (isPlainObject(obj[key])) return objToCss(obj[key], key);\n    return hyphenateStyleName_1(key) + ': ' + obj[key] + ';';\n  }).join(' ');\n  return prevKey ? prevKey + ' {\\n  ' + css + '\\n}' : css;\n};\n\nvar flatten = function flatten(chunks, executionContext) {\n  return chunks.reduce(function (ruleSet, chunk) {\n    /* Remove falsey values */\n    if (chunk === undefined || chunk === null || chunk === false || chunk === '') {\n      return ruleSet;\n    }\n    /* Flatten ruleSet */\n    if (Array.isArray(chunk)) {\n      return [].concat(ruleSet, flatten(chunk, executionContext));\n    }\n\n    /* Handle other components */\n    if (chunk.hasOwnProperty('styledComponentId')) {\n      // $FlowFixMe not sure how to make this pass\n      return [].concat(ruleSet, ['.' + chunk.styledComponentId]);\n    }\n\n    /* Either execute or defer the function */\n    if (typeof chunk === 'function') {\n      return executionContext ? ruleSet.concat.apply(ruleSet, flatten([chunk(executionContext)], executionContext)) : ruleSet.concat(chunk);\n    }\n\n    /* Handle objects */\n    return ruleSet.concat(\n    // $FlowFixMe have to add %checks somehow to isPlainObject\n    isPlainObject(chunk) ? objToCss(chunk) : chunk.toString());\n  }, []);\n};\n\n//      \nvar stylis = new Stylis({\n  global: false,\n  cascade: true,\n  keyframe: false,\n  prefix: true,\n  compress: false,\n  semicolon: true\n});\n\nvar stringifyRules = function stringifyRules(rules, selector, prefix) {\n  var flatCSS = rules.join('').replace(/^\\s*\\/\\/.*$/gm, ''); // replace JS comments\n\n  var cssStr = selector && prefix ? prefix + ' ' + selector + ' { ' + flatCSS + ' }' : flatCSS;\n\n  return stylis(prefix || !selector ? '' : selector, cssStr);\n};\n\n//      \nvar chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\nvar charsLength = chars.length;\n\n/* Some high number, usually 9-digit base-10. Map it to base-😎 */\nvar generateAlphabeticName = function generateAlphabeticName(code) {\n  var name = '';\n  var x = void 0;\n\n  for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {\n    name = chars[x % charsLength] + name;\n  }\n\n  return chars[x % charsLength] + name;\n};\n\n//      \n\n\nvar interleave = (function (strings, interpolations) {\n  return interpolations.reduce(function (array, interp, i) {\n    return array.concat(interp, strings[i + 1]);\n  }, [strings[0]]);\n});\n\n//      \nvar css = (function (strings) {\n  for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    interpolations[_key - 1] = arguments[_key];\n  }\n\n  return flatten(interleave(strings, interpolations));\n});\n\n//      \nvar SC_COMPONENT_ID = /^[^\\S\\n]*?\\/\\* sc-component-id:\\s+(\\S+)\\s+\\*\\//gm;\n\nvar extractCompsFromCSS = (function (maybeCSS) {\n  var css = '' + (maybeCSS || ''); // Definitely a string, and a clone\n  var existingComponents = [];\n  css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) {\n    existingComponents.push({ componentId: componentId, matchIndex: matchIndex });\n    return match;\n  });\n  return existingComponents.map(function (_ref, i) {\n    var componentId = _ref.componentId,\n        matchIndex = _ref.matchIndex;\n\n    var nextComp = existingComponents[i + 1];\n    var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex);\n    return { componentId: componentId, cssFromDOM: cssFromDOM };\n  });\n});\n\n//      \n/* eslint-disable camelcase, no-undef */\n\nvar getNonce = (function () {\n                                     return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n});\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n//      \n/* eslint-disable no-underscore-dangle */\n/*\n * Browser Style Sheet with Rehydration\n *\n * <style data-styled-components=\"x y z\"\n *        data-styled-components-is-local=\"true\">\n *   /· sc-component-id: a ·/\n *   .sc-a { ... }\n *   .x { ... }\n *   /· sc-component-id: b ·/\n *   .sc-b { ... }\n *   .y { ... }\n *   .z { ... }\n * </style>\n *\n * Note: replace · with * in the above snippet.\n * */\nvar COMPONENTS_PER_TAG = 40;\n\nvar BrowserTag = function () {\n  function BrowserTag(el, isLocal) {\n    var existingSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n    classCallCheck(this, BrowserTag);\n\n    this.el = el;\n    this.isLocal = isLocal;\n    this.ready = false;\n\n    var extractedComps = extractCompsFromCSS(existingSource);\n\n    this.size = extractedComps.length;\n    this.components = extractedComps.reduce(function (acc, obj) {\n      acc[obj.componentId] = obj; // eslint-disable-line no-param-reassign\n      return acc;\n    }, {});\n  }\n\n  BrowserTag.prototype.isFull = function isFull() {\n    return this.size >= COMPONENTS_PER_TAG;\n  };\n\n  BrowserTag.prototype.addComponent = function addComponent(componentId) {\n    if (!this.ready) this.replaceElement();\n    if (process.env.NODE_ENV !== 'production' && this.components[componentId]) {\n      throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n    }\n\n    var comp = { componentId: componentId, textNode: document.createTextNode('') };\n    this.el.appendChild(comp.textNode);\n\n    this.size += 1;\n    this.components[componentId] = comp;\n  };\n\n  BrowserTag.prototype.inject = function inject(componentId, css, name) {\n    if (!this.ready) this.replaceElement();\n    var comp = this.components[componentId];\n\n    if (process.env.NODE_ENV !== 'production' && !comp) {\n      throw new Error('Must add a new component before you can inject css into it');\n    }\n    if (comp.textNode.data === '') {\n      comp.textNode.appendData('\\n/* sc-component-id: ' + componentId + ' */\\n');\n    }\n\n    comp.textNode.appendData(css);\n    if (name) {\n      var existingNames = this.el.getAttribute(SC_ATTR);\n      this.el.setAttribute(SC_ATTR, existingNames ? existingNames + ' ' + name : name);\n    }\n\n    var nonce = getNonce();\n\n    if (nonce) {\n      this.el.setAttribute('nonce', nonce);\n    }\n  };\n\n  BrowserTag.prototype.toHTML = function toHTML() {\n    return this.el.outerHTML;\n  };\n\n  BrowserTag.prototype.toReactElement = function toReactElement() {\n    throw new Error(\"BrowserTag doesn't implement toReactElement!\");\n  };\n\n  BrowserTag.prototype.clone = function clone() {\n    throw new Error('BrowserTag cannot be cloned!');\n  };\n\n  /* Because we care about source order, before we can inject anything we need to\n   * create a text node for each component and replace the existing CSS. */\n\n\n  BrowserTag.prototype.replaceElement = function replaceElement() {\n    var _this = this;\n\n    this.ready = true;\n    // We have nothing to inject. Use the current el.\n    if (this.size === 0) return;\n\n    // Build up our replacement style tag\n    var newEl = this.el.cloneNode();\n    newEl.appendChild(document.createTextNode('\\n'));\n\n    Object.keys(this.components).forEach(function (key) {\n      var comp = _this.components[key];\n\n      // eslint-disable-next-line no-param-reassign\n      comp.textNode = document.createTextNode(comp.cssFromDOM);\n      newEl.appendChild(comp.textNode);\n    });\n\n    if (!this.el.parentNode) {\n      throw new Error(\"Trying to replace an element that wasn't mounted!\");\n    }\n\n    // The ol' switcheroo\n    this.el.parentNode.replaceChild(newEl, this.el);\n    this.el = newEl;\n  };\n\n  return BrowserTag;\n}();\n\n/* Factory function to separate DOM operations from logical ones*/\n\n\nvar BrowserStyleSheet = {\n  create: function create() {\n    var tags = [];\n    var names = {};\n\n    /* Construct existing state from DOM */\n    var nodes = document.querySelectorAll('[' + SC_ATTR + ']');\n    var nodesLength = nodes.length;\n\n    for (var i = 0; i < nodesLength; i += 1) {\n      var el = nodes[i];\n\n      tags.push(new BrowserTag(el, el.getAttribute(LOCAL_ATTR) === 'true', el.innerHTML));\n\n      var attr = el.getAttribute(SC_ATTR);\n      if (attr) {\n        attr.trim().split(/\\s+/).forEach(function (name) {\n          names[name] = true;\n        });\n      }\n    }\n\n    /* Factory for making more tags */\n    var tagConstructor = function tagConstructor(isLocal) {\n      var el = document.createElement('style');\n      el.type = 'text/css';\n      el.setAttribute(SC_ATTR, '');\n      el.setAttribute(LOCAL_ATTR, isLocal ? 'true' : 'false');\n      if (!document.head) throw new Error('Missing document <head>');\n      document.head.appendChild(el);\n      return new BrowserTag(el, isLocal);\n    };\n\n    return new StyleSheet(tagConstructor, tags, names);\n  }\n};\n\n//      \nvar SC_ATTR = 'data-styled-components';\nvar LOCAL_ATTR = 'data-styled-components-is-local';\nvar CONTEXT_KEY = '__styled-components-stylesheet__';\n\n/* eslint-disable flowtype/object-type-delimiter */\n\n/* eslint-enable flowtype/object-type-delimiter */\n\nvar instance = null;\n// eslint-disable-next-line no-use-before-define\nvar clones = [];\n\nvar StyleSheet = function () {\n  function StyleSheet(tagConstructor) {\n    var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    var names = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, StyleSheet);\n    this.hashes = {};\n    this.deferredInjections = {};\n    this.stylesCacheable = typeof document !== 'undefined';\n\n    this.tagConstructor = tagConstructor;\n    this.tags = tags;\n    this.names = names;\n    this.constructComponentTagMap();\n  }\n\n  // helper for `ComponentStyle` to know when it cache static styles.\n  // staticly styled-component can not safely cache styles on the server\n  // without all `ComponentStyle` instances saving a reference to the\n  // the styleSheet instance they last rendered with,\n  // or listening to creation / reset events. otherwise you might create\n  // a component with one stylesheet and render it another api response\n  // with another, losing styles on from your server-side render.\n\n\n  StyleSheet.prototype.constructComponentTagMap = function constructComponentTagMap() {\n    var _this = this;\n\n    this.componentTags = {};\n\n    this.tags.forEach(function (tag) {\n      Object.keys(tag.components).forEach(function (componentId) {\n        _this.componentTags[componentId] = tag;\n      });\n    });\n  };\n\n  /* Best level of caching—get the name from the hash straight away. */\n\n\n  StyleSheet.prototype.getName = function getName(hash) {\n    return this.hashes[hash.toString()];\n  };\n\n  /* Second level of caching—if the name is already in the dom, don't\n   * inject anything and record the hash for getName next time. */\n\n\n  StyleSheet.prototype.alreadyInjected = function alreadyInjected(hash, name) {\n    if (!this.names[name]) return false;\n\n    this.hashes[hash.toString()] = name;\n    return true;\n  };\n\n  /* Third type of caching—don't inject components' componentId twice. */\n\n\n  StyleSheet.prototype.hasInjectedComponent = function hasInjectedComponent(componentId) {\n    return !!this.componentTags[componentId];\n  };\n\n  StyleSheet.prototype.deferredInject = function deferredInject(componentId, isLocal, css) {\n    if (this === instance) {\n      clones.forEach(function (clone) {\n        clone.deferredInject(componentId, isLocal, css);\n      });\n    }\n\n    this.getOrCreateTag(componentId, isLocal);\n    this.deferredInjections[componentId] = css;\n  };\n\n  StyleSheet.prototype.inject = function inject(componentId, isLocal, css, hash, name) {\n    if (this === instance) {\n      clones.forEach(function (clone) {\n        clone.inject(componentId, isLocal, css);\n      });\n    }\n\n    var tag = this.getOrCreateTag(componentId, isLocal);\n\n    var deferredInjection = this.deferredInjections[componentId];\n    if (deferredInjection) {\n      tag.inject(componentId, deferredInjection);\n      delete this.deferredInjections[componentId];\n    }\n\n    tag.inject(componentId, css, name);\n\n    if (hash && name) {\n      this.hashes[hash.toString()] = name;\n    }\n  };\n\n  StyleSheet.prototype.toHTML = function toHTML() {\n    return this.tags.map(function (tag) {\n      return tag.toHTML();\n    }).join('');\n  };\n\n  StyleSheet.prototype.toReactElements = function toReactElements() {\n    return this.tags.map(function (tag, i) {\n      return tag.toReactElement('sc-' + i);\n    });\n  };\n\n  StyleSheet.prototype.getOrCreateTag = function getOrCreateTag(componentId, isLocal) {\n    var existingTag = this.componentTags[componentId];\n    if (existingTag) {\n      return existingTag;\n    }\n\n    var lastTag = this.tags[this.tags.length - 1];\n    var componentTag = !lastTag || lastTag.isFull() || lastTag.isLocal !== isLocal ? this.createNewTag(isLocal) : lastTag;\n    this.componentTags[componentId] = componentTag;\n    componentTag.addComponent(componentId);\n    return componentTag;\n  };\n\n  StyleSheet.prototype.createNewTag = function createNewTag(isLocal) {\n    var newTag = this.tagConstructor(isLocal);\n    this.tags.push(newTag);\n    return newTag;\n  };\n\n  StyleSheet.reset = function reset(isServer) {\n    instance = StyleSheet.create(isServer);\n  };\n\n  /* We can make isServer totally implicit once Jest 20 drops and we\n   * can change environment on a per-test basis. */\n\n\n  StyleSheet.create = function create() {\n    var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof document === 'undefined';\n\n    return (isServer ? ServerStyleSheet : BrowserStyleSheet).create();\n  };\n\n  StyleSheet.clone = function clone(oldSheet) {\n    var newSheet = new StyleSheet(oldSheet.tagConstructor, oldSheet.tags.map(function (tag) {\n      return tag.clone();\n    }), _extends({}, oldSheet.names));\n\n    newSheet.hashes = _extends({}, oldSheet.hashes);\n    newSheet.deferredInjections = _extends({}, oldSheet.deferredInjections);\n    clones.push(newSheet);\n\n    return newSheet;\n  };\n\n  createClass(StyleSheet, null, [{\n    key: 'instance',\n    get: function get$$1() {\n      return instance || (instance = StyleSheet.create());\n    }\n  }]);\n  return StyleSheet;\n}();\n\nvar _StyleSheetManager$ch;\n\n//      \nvar StyleSheetManager = function (_Component) {\n  inherits(StyleSheetManager, _Component);\n\n  function StyleSheetManager() {\n    classCallCheck(this, StyleSheetManager);\n    return possibleConstructorReturn(this, _Component.apply(this, arguments));\n  }\n\n  StyleSheetManager.prototype.getChildContext = function getChildContext() {\n    var _ref;\n\n    return _ref = {}, _ref[CONTEXT_KEY] = this.props.sheet, _ref;\n  };\n\n  StyleSheetManager.prototype.render = function render() {\n    /* eslint-disable react/prop-types */\n    // Flow v0.43.1 will report an error accessing the `children` property,\n    // but v0.47.0 will not. It is necessary to use a type cast instead of\n    // a \"fixme\" comment to satisfy both Flow versions.\n    return React.Children.only(this.props.children);\n  };\n\n  return StyleSheetManager;\n}(Component);\n\nStyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]).isRequired, _StyleSheetManager$ch);\n\nStyleSheetManager.propTypes = {\n  sheet: PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]).isRequired\n};\n\n//      \n/* eslint-disable no-underscore-dangle */\nvar ServerTag = function () {\n  function ServerTag(isLocal) {\n    classCallCheck(this, ServerTag);\n\n    this.isLocal = isLocal;\n    this.components = {};\n    this.size = 0;\n    this.names = [];\n  }\n\n  ServerTag.prototype.isFull = function isFull() {\n    return false;\n  };\n\n  ServerTag.prototype.addComponent = function addComponent(componentId) {\n    if (process.env.NODE_ENV !== 'production' && this.components[componentId]) {\n      throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n    }\n    this.components[componentId] = { componentId: componentId, css: '' };\n    this.size += 1;\n  };\n\n  ServerTag.prototype.concatenateCSS = function concatenateCSS() {\n    var _this = this;\n\n    return Object.keys(this.components).reduce(function (styles, k) {\n      return styles + _this.components[k].css;\n    }, '');\n  };\n\n  ServerTag.prototype.inject = function inject(componentId, css, name) {\n    var comp = this.components[componentId];\n\n    if (process.env.NODE_ENV !== 'production' && !comp) {\n      throw new Error('Must add a new component before you can inject css into it');\n    }\n    if (comp.css === '') comp.css = '/* sc-component-id: ' + componentId + ' */\\n';\n\n    comp.css += css.replace(/\\n*$/, '\\n');\n\n    if (name) this.names.push(name);\n  };\n\n  ServerTag.prototype.toHTML = function toHTML() {\n    var attrs = ['type=\"text/css\"', SC_ATTR + '=\"' + this.names.join(' ') + '\"', LOCAL_ATTR + '=\"' + (this.isLocal ? 'true' : 'false') + '\"'];\n\n    var nonce = getNonce();\n\n    if (nonce) {\n      attrs.push('nonce=\"' + nonce + '\"');\n    }\n\n    return '<style ' + attrs.join(' ') + '>' + this.concatenateCSS() + '</style>';\n  };\n\n  ServerTag.prototype.toReactElement = function toReactElement(key) {\n    var _attrs;\n\n    var attrs = (_attrs = {}, _attrs[SC_ATTR] = this.names.join(' '), _attrs[LOCAL_ATTR] = this.isLocal.toString(), _attrs);\n\n    var nonce = getNonce();\n\n    if (nonce) {\n      attrs.nonce = nonce;\n    }\n\n    return React.createElement('style', _extends({\n      key: key,\n      type: 'text/css'\n    }, attrs, {\n      dangerouslySetInnerHTML: { __html: this.concatenateCSS() }\n    }));\n  };\n\n  ServerTag.prototype.clone = function clone() {\n    var _this2 = this;\n\n    var copy = new ServerTag(this.isLocal);\n    copy.names = [].concat(this.names);\n    copy.size = this.size;\n    copy.components = Object.keys(this.components).reduce(function (acc, key) {\n      acc[key] = _extends({}, _this2.components[key]); // eslint-disable-line no-param-reassign\n      return acc;\n    }, {});\n\n    return copy;\n  };\n\n  return ServerTag;\n}();\n\nvar ServerStyleSheet = function () {\n  function ServerStyleSheet() {\n    classCallCheck(this, ServerStyleSheet);\n\n    this.instance = StyleSheet.clone(StyleSheet.instance);\n  }\n\n  ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n    if (this.closed) {\n      throw new Error(\"Can't collect styles once you've called getStyleTags!\");\n    }\n    return React.createElement(\n      StyleSheetManager,\n      { sheet: this.instance },\n      children\n    );\n  };\n\n  ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n    if (!this.closed) {\n      clones.splice(clones.indexOf(this.instance), 1);\n      this.closed = true;\n    }\n\n    return this.instance.toHTML();\n  };\n\n  ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n    if (!this.closed) {\n      clones.splice(clones.indexOf(this.instance), 1);\n      this.closed = true;\n    }\n\n    return this.instance.toReactElements();\n  };\n\n  ServerStyleSheet.create = function create() {\n    return new StyleSheet(function (isLocal) {\n      return new ServerTag(isLocal);\n    });\n  };\n\n  return ServerStyleSheet;\n}();\n\n//      \n\nvar LIMIT = 200;\n\nvar createWarnTooManyClasses = (function (displayName) {\n  var generatedClasses = {};\n  var warningSeen = false;\n\n  return function (className) {\n    if (!warningSeen) {\n      generatedClasses[className] = true;\n      if (Object.keys(generatedClasses).length >= LIMIT) {\n        // Unable to find latestRule in test environment.\n        /* eslint-disable no-console, prefer-template */\n        console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \\n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' + 'Example:\\n' + '  const Component = styled.div.attrs({\\n' + '    style: ({ background }) => ({\\n' + '      background,\\n' + '    }),\\n' + '  })`width: 100%;`\\n\\n' + '  <Component />');\n        warningSeen = true;\n        generatedClasses = {};\n      }\n    }\n  };\n});\n\n//      \n/* eslint-disable max-len */\n/**\n * Trying to avoid the unknown-prop errors on styled components by filtering by\n * React's attribute whitelist.\n *\n * To regenerate this regex:\n *\n * 1. `npm i -g regexgen` (https://github.com/devongovett/regexgen)\n * 2. Run `regexgen` with the list of space-separated words below as input\n * 3. Surround the emitted regex with this: `/^(GENERATED_REGEX)$/` -- this will ensure a full string match\n *    and no false positives from partials\n **/\n/*\nchildren dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan\n*/\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_REGEX = /^((?:s(?:uppressContentEditableWarn|croll|pac)|(?:shape|image|text)Render|(?:letter|word)Spac|vHang|hang)ing|(?:on(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)Captur|alignmentBaselin|(?:limitingConeAng|xlink(?:(?:Arcr|R)o|Tit)|s(?:urfaceSca|ty|ca)|unselectab|baseProfi|fontSty|(?:focus|dragg)ab|multip|profi|tit)l|d(?:ominantBaselin|efaultValu)|a(?:uto(?:Capitaliz|Revers|Sav)|dditiv)|(?:(?:formNoValid|xlinkActu|noValid|accumul|rot)a|autoComple|decelera)t|(?:(?:attribute|item)T|datat)yp|(?:attribute|glyph)Nam|playsInlin|(?:formE|e)ncTyp|(?:writing|input|edge)Mod|(?:xlinkTy|itemSco|keyTy|slo)p|(?:amplitu|mo)d|(?:xmlSpa|non)c|fillRul|(?:dateTi|na)m|r(?:esourc|ol)|xmlBas|wmod)e|(?:glyphOrientationHorizont|loc)al|(?:externalResourcesRequir|select|revers|mut)ed|c(?:o(?:lorInterpolationFilter|ntrol|ord)s|o(?:lor(?:Interpolation)?|ntent)|(?:ontentS(?:cript|tyle)Typ|o(?:ntentEditab|lorProfi)l|l(?:assNam|ipRul)|a(?:lcMod|ptur)|it)e|olorRendering|l(?:ipPathUnits|assID)|o(?:ntextMenu|ls)|h(?:eckedLink|a(?:llenge|rSet)|ildren|ecked)|ell(?:Spac|Padd)ing|(?:rossOrigi|olSpa)n|apHeight|lip(?:Path)?|ursor|[xy])|glyphOrientationVertical|d(?:angerouslySetInnerHTML|efaultChecked|ownload|isabled|isplay|[xy])|(?:s(?:trikethroughThickn|eaml)es|(?:und|ov)erlineThicknes|r(?:equiredExtension|adiu)|(?:requiredFeatur|tableValu|stitchTil|numOctav|filterR)e|key(?:(?:Splin|Tim)e|Param)|autoFocu|header|bia)s|(?:(?:st(?:rikethroughPosi|dDevia)|(?:und|ov)erlinePosi|(?:textDecor|elev)a|orienta)tio|(?:strokeLinejo|orig)i|formActio|zoomAndPa|onFocusI|directio|(?:vers|act)io|rowSpa|begi|ico)n|o(?:n(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)|rient)|p(?:reserveA(?:spectRatio|lpha)|ointsAt[X-Z]|anose1)|(?:patternContent|ma(?:sk(?:Content)?|rker)|primitive|gradient|pattern|filter)Units|(?:gradientT|patternT|t)ransform|(?:(?:allowTranspar|baseFrequ)enc|re(?:ferrerPolic|adOnl)|(?:(?:st(?:roke|op)O|floodO|fillO|o)pac|integr|secur)it|visibilit|fontFamil|accessKe|propert|summar)y|(?:strokeMiterlimi|(?:specularConsta|repeatCou|fontVaria)n|(?:(?:specularE|e)xpon|renderingInt|asc)en|d(?:iffuseConsta|esce)n|(?:fontSizeAdju|lengthAdju|manife)s|baselineShif|vectorEffec|(?:(?:mar(?:ker|gin)|x)H|accentH|fontW)eigh|a(?:utoCorrec|bou)|markerStar|onFocusOu|in(?:tercep|lis)|restar|forma|heigh|lis)t|(?:(?:st(?:rokeDasho|artO)|o)ffs|acceptChars|formTarg|viewTarg|srcS)et|(?:(?:enableBackgrou|markerE)n|s(?:p(?:readMetho|ee)|ee)|formMetho|m(?:arkerMi|etho)|preloa|kin)d|k(?:ernel(?:UnitLength|Matrix)|[1-4])|(?:[xy]ChannelSelect|lightingCol|textAnch|floodCol|stopCol|operat|htmlF)or|(?:allowFullScre|hidd)en|strokeDasharray|systemLanguage|(?:strokeLineca|itemPro|useMa|wra|loo)p|v(?:Mathematical|ert(?:Origin[XY]|AdvY)|alues|ocab)|(?:pointerEve|keyPoi)nts|unicodeRange|(?:(?:allowReord|placehold|frameBord|paintOrd|post|ord)e|repeatDu|d(?:efe|u))r|mathematical|(?:vI|i)deographic|h(?:oriz(?:Origin|Adv)X|ttpEquiv)|u(?:nicodeBidi|[12])|(?:fontStretc|hig)h|(?:(?:mar(?:ker|gin)W|strokeW)id|azimu)th|vAlphabetic|mediaGroup|spellCheck|(?:unitsPerE|optimu|fro)m|r(?:adioGroup|e(?:sults|f[XY]|l)|ows|[xy])|(?:xmlnsXl|valueL)ink|a(?:rabicForm|l(?:phabetic|t)|sync)|pathLength|(?:text|m(?:in|ax))Length|innerHTML|xlinkShow|(?:xlinkHr|glyphR)ef|r(?:e(?:quired|sult|f))?|o(?:verflow|pen)|(?:tabInde|(?:sand|b)bo|viewBo)x|(?:(?:href|xml|src)La|kerni)ng|f(?:o(?:ntSize|rm)|il(?:ter|l))|autoPlay|unicode|p(?:attern|oints)|t(?:arget[XY]|o)|i(?:temRef|n2|s)|divisor|d(?:efault|ata|ir)?|srcDoc|s(?:coped|te(?:m[hv]|p)|pan)|(?:width|size)s|(?:stri|la)ng|prefix|itemID|s(?:t(?:roke|art)|hape|cope|rc)|a(?:ccept|s)|t(?:arget|ype)|typeof|width|value|x(?:mlns)?|label|m(?:edia|a(?:sk|x)|in)|size|href|k(?:ey)?|end|low|x[12]|i[dn]|y[12]|g[12]|by|f[xy]|[yz])$/;\n\n/* From DOMProperty */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nvar isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\n\nvar validAttr = (function (name) {\n  return ATTRIBUTE_REGEX.test(name) || isCustomAttribute(name.toLowerCase());\n});\n\n//      \n\n\nfunction isTag(target) /* : %checks */{\n  return typeof target === 'string';\n}\n\n//      \n\n\nfunction isStyledComponent(target) /* : %checks */{\n  return typeof target === 'function' && typeof target.styledComponentId === 'string';\n}\n\n//      \n\n/* eslint-disable no-undef */\nfunction getComponentName(target) {\n  return target.displayName || target.name || 'Component';\n}\n\n//      \n\n\nvar determineTheme = (function (props, fallbackTheme, defaultProps) {\n  // Props should take precedence over ThemeProvider, which should take precedence over\n  // defaultProps, but React automatically puts defaultProps on props.\n\n  /* eslint-disable react/prop-types */\n  var isDefaultTheme = defaultProps && props.theme === defaultProps.theme;\n  var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme;\n  /* eslint-enable */\n\n  return theme;\n});\n\n//      \nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`-]+/g;\nvar dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nfunction escape(str) {\n  return str\n  // Replace all possible CSS selectors\n  .replace(escapeRegex, '-')\n\n  // Remove extraneous hyphens at the start and end\n  .replace(dashesAtEnds, '');\n}\n\n//      \n/**\n * Creates a broadcast that can be listened to, i.e. simple event emitter\n *\n * @see https://github.com/ReactTraining/react-broadcast\n */\n\nvar createBroadcast = function createBroadcast(initialState) {\n  var listeners = {};\n  var id = 0;\n  var state = initialState;\n\n  function publish(nextState) {\n    state = nextState;\n\n    // eslint-disable-next-line guard-for-in, no-restricted-syntax\n    for (var key in listeners) {\n      var listener = listeners[key];\n      if (listener === undefined) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      listener(state);\n    }\n  }\n\n  function subscribe(listener) {\n    var currentId = id;\n    listeners[currentId] = listener;\n    id += 1;\n    listener(state);\n    return currentId;\n  }\n\n  function unsubscribe(unsubID) {\n    listeners[unsubID] = undefined;\n  }\n\n  return { publish: publish, subscribe: subscribe, unsubscribe: unsubscribe };\n};\n\n//      \n// Helper to call a given function, only once\nvar once = (function (cb) {\n  var called = false;\n\n  return function () {\n    if (!called) {\n      called = true;\n      cb();\n    }\n  };\n});\n\nvar _ThemeProvider$childC;\nvar _ThemeProvider$contex;\n\n//      \n/* globals React$Element */\n// NOTE: DO NOT CHANGE, changing this is a semver major change!\nvar CHANNEL = '__styled-components__';\nvar CHANNEL_NEXT = CHANNEL + 'next__';\n\nvar CONTEXT_CHANNEL_SHAPE = PropTypes.shape({\n  getTheme: PropTypes.func,\n  subscribe: PropTypes.func,\n  unsubscribe: PropTypes.func\n});\n\nvar warnChannelDeprecated = void 0;\nif (process.env.NODE_ENV !== 'production') {\n  warnChannelDeprecated = once(function () {\n    // eslint-disable-next-line no-console\n    console.error('Warning: Usage of `context.' + CHANNEL + '` as a function is deprecated. It will be replaced with the object on `.context.' + CHANNEL_NEXT + '` in a future version.');\n  });\n}\n\nvar isFunction = function isFunction(test) {\n  return typeof test === 'function';\n};\n\n/**\n * Provide a theme to an entire react component tree via context and event listeners (have to do\n * both context and event emitter as pure components block context updates)\n */\n\nvar ThemeProvider = function (_Component) {\n  inherits(ThemeProvider, _Component);\n\n  function ThemeProvider() {\n    classCallCheck(this, ThemeProvider);\n\n    var _this = possibleConstructorReturn(this, _Component.call(this));\n\n    _this.unsubscribeToOuterId = -1;\n\n    _this.getTheme = _this.getTheme.bind(_this);\n    return _this;\n  }\n\n  ThemeProvider.prototype.componentWillMount = function componentWillMount() {\n    var _this2 = this;\n\n    // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme\n    // with the outer theme\n    var outerContext = this.context[CHANNEL_NEXT];\n    if (outerContext !== undefined) {\n      this.unsubscribeToOuterId = outerContext.subscribe(function (theme) {\n        _this2.outerTheme = theme;\n      });\n    }\n    this.broadcast = createBroadcast(this.getTheme());\n  };\n\n  ThemeProvider.prototype.getChildContext = function getChildContext() {\n    var _this3 = this,\n        _babelHelpers$extends;\n\n    return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL_NEXT] = {\n      getTheme: this.getTheme,\n      subscribe: this.broadcast.subscribe,\n      unsubscribe: this.broadcast.unsubscribe\n    }, _babelHelpers$extends[CHANNEL] = function (subscriber) {\n      if (process.env.NODE_ENV !== 'production') {\n        warnChannelDeprecated();\n      }\n\n      // Patch the old `subscribe` provide via `CHANNEL` for older clients.\n      var unsubscribeId = _this3.broadcast.subscribe(subscriber);\n      return function () {\n        return _this3.broadcast.unsubscribe(unsubscribeId);\n      };\n    }, _babelHelpers$extends));\n  };\n\n  ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if (this.props.theme !== nextProps.theme) {\n      this.broadcast.publish(this.getTheme(nextProps.theme));\n    }\n  };\n\n  ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n    if (this.unsubscribeToOuterId !== -1) {\n      this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeToOuterId);\n    }\n  };\n\n  // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n\n\n  ThemeProvider.prototype.getTheme = function getTheme(passedTheme) {\n    var theme = passedTheme || this.props.theme;\n    if (isFunction(theme)) {\n      var mergedTheme = theme(this.outerTheme);\n      if (process.env.NODE_ENV !== 'production' && !isPlainObject(mergedTheme)) {\n        throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n      }\n      return mergedTheme;\n    }\n    if (!isPlainObject(theme)) {\n      throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n    }\n    return _extends({}, this.outerTheme, theme);\n  };\n\n  ThemeProvider.prototype.render = function render() {\n    if (!this.props.children) {\n      return null;\n    }\n    return React.Children.only(this.props.children);\n  };\n\n  return ThemeProvider;\n}(Component);\n\nThemeProvider.childContextTypes = (_ThemeProvider$childC = {}, _ThemeProvider$childC[CHANNEL] = PropTypes.func, _ThemeProvider$childC[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _ThemeProvider$childC);\nThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _ThemeProvider$contex);\n\n//      \n\n// HACK for generating all static styles without needing to allocate\n// an empty execution context every single time...\nvar STATIC_EXECUTION_CONTEXT = {};\n\nvar _StyledComponent = (function (ComponentStyle, constructWithOptions) {\n  var identifiers = {};\n\n  /* We depend on components having unique IDs */\n  var generateId = function generateId(_displayName, parentComponentId) {\n    var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);\n\n    var componentId = void 0;\n\n    /**\n     * only fall back to hashing the component injection order if\n     * a proper displayName isn't provided by the babel plugin\n     */\n    if (!_displayName) {\n      var nr = (identifiers[displayName] || 0) + 1;\n      identifiers[displayName] = nr;\n\n      componentId = displayName + '-' + ComponentStyle.generateName(displayName + nr);\n    } else {\n      componentId = displayName + '-' + ComponentStyle.generateName(displayName);\n    }\n\n    return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId;\n  };\n\n  var BaseStyledComponent = function (_Component) {\n    inherits(BaseStyledComponent, _Component);\n\n    function BaseStyledComponent() {\n      var _temp, _this, _ret;\n\n      classCallCheck(this, BaseStyledComponent);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.attrs = {}, _this.state = {\n        theme: null,\n        generatedClassName: ''\n      }, _this.unsubscribeId = -1, _temp), possibleConstructorReturn(_this, _ret);\n    }\n\n    BaseStyledComponent.prototype.unsubscribeFromContext = function unsubscribeFromContext() {\n      if (this.unsubscribeId !== -1) {\n        this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeId);\n      }\n    };\n\n    BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) {\n      var attrs = this.constructor.attrs;\n\n      var context = _extends({}, props, { theme: theme });\n      if (attrs === undefined) {\n        return context;\n      }\n\n      this.attrs = Object.keys(attrs).reduce(function (acc, key) {\n        var attr = attrs[key];\n        // eslint-disable-next-line no-param-reassign\n        acc[key] = typeof attr === 'function' ? attr(context) : attr;\n        return acc;\n      }, {});\n\n      return _extends({}, context, this.attrs);\n    };\n\n    BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n      var _constructor = this.constructor,\n          attrs = _constructor.attrs,\n          componentStyle = _constructor.componentStyle,\n          warnTooManyClasses = _constructor.warnTooManyClasses;\n\n      var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.instance;\n\n      // staticaly styled-components don't need to build an execution context object,\n      // and shouldn't be increasing the number of class names\n      if (componentStyle.isStatic && attrs === undefined) {\n        return componentStyle.generateAndInjectStyles(STATIC_EXECUTION_CONTEXT, styleSheet);\n      } else {\n        var executionContext = this.buildExecutionContext(theme, props);\n        var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet);\n\n        if (process.env.NODE_ENV !== 'production' && warnTooManyClasses !== undefined) {\n          warnTooManyClasses(className);\n        }\n\n        return className;\n      }\n    };\n\n    BaseStyledComponent.prototype.componentWillMount = function componentWillMount() {\n      var _this2 = this;\n\n      var componentStyle = this.constructor.componentStyle;\n\n      var styledContext = this.context[CHANNEL_NEXT];\n\n      // If this is a staticaly-styled component, we don't need to the theme\n      // to generate or build styles.\n      if (componentStyle.isStatic) {\n        var generatedClassName = this.generateAndInjectStyles(STATIC_EXECUTION_CONTEXT, this.props);\n        this.setState({ generatedClassName: generatedClassName });\n        // If there is a theme in the context, subscribe to the event emitter. This\n        // is necessary due to pure components blocking context updates, this circumvents\n        // that by updating when an event is emitted\n      } else if (styledContext !== undefined) {\n        var subscribe = styledContext.subscribe;\n\n        this.unsubscribeId = subscribe(function (nextTheme) {\n          // This will be called once immediately\n          var theme = determineTheme(_this2.props, nextTheme, _this2.constructor.defaultProps);\n          var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props);\n\n          _this2.setState({ theme: theme, generatedClassName: generatedClassName });\n        });\n      } else {\n        // eslint-disable-next-line react/prop-types\n        var theme = this.props.theme || {};\n        var _generatedClassName = this.generateAndInjectStyles(theme, this.props);\n        this.setState({ theme: theme, generatedClassName: _generatedClassName });\n      }\n    };\n\n    BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var _this3 = this;\n\n      // If this is a staticaly-styled component, we don't need to listen to\n      // props changes to update styles\n      var componentStyle = this.constructor.componentStyle;\n\n      if (componentStyle.isStatic) {\n        return;\n      }\n\n      this.setState(function (oldState) {\n        var theme = determineTheme(nextProps, oldState.theme, _this3.constructor.defaultProps);\n        var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps);\n\n        return { theme: theme, generatedClassName: generatedClassName };\n      });\n    };\n\n    BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n      this.unsubscribeFromContext();\n    };\n\n    BaseStyledComponent.prototype.render = function render() {\n      var _this4 = this;\n\n      // eslint-disable-next-line react/prop-types\n      var innerRef = this.props.innerRef;\n      var generatedClassName = this.state.generatedClassName;\n      var _constructor2 = this.constructor,\n          styledComponentId = _constructor2.styledComponentId,\n          target = _constructor2.target;\n\n\n      var isTargetTag = isTag(target);\n\n      var className = [\n      // eslint-disable-next-line react/prop-types\n      this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' ');\n\n      var baseProps = _extends({}, this.attrs, {\n        className: className\n      });\n\n      if (isStyledComponent(target)) {\n        baseProps.innerRef = innerRef;\n      } else {\n        baseProps.ref = innerRef;\n      }\n\n      var propsForElement = Object.keys(this.props).reduce(function (acc, propName) {\n        // Don't pass through non HTML tags through to HTML elements\n        // always omit innerRef\n        if (propName !== 'innerRef' && propName !== 'className' && (!isTargetTag || validAttr(propName))) {\n          // eslint-disable-next-line no-param-reassign\n          acc[propName] = _this4.props[propName];\n        }\n\n        return acc;\n      }, baseProps);\n\n      return createElement(target, propsForElement);\n    };\n\n    return BaseStyledComponent;\n  }(Component);\n\n  var createStyledComponent = function createStyledComponent(target, options, rules) {\n    var _StyledComponent$cont;\n\n    var _options$displayName = options.displayName,\n        displayName = _options$displayName === undefined ? isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')' : _options$displayName,\n        _options$componentId = options.componentId,\n        componentId = _options$componentId === undefined ? generateId(options.displayName, options.parentComponentId) : _options$componentId,\n        _options$ParentCompon = options.ParentComponent,\n        ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon,\n        extendingRules = options.rules,\n        attrs = options.attrs;\n\n\n    var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : componentId;\n\n    var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), attrs, styledComponentId);\n\n    var StyledComponent = function (_ParentComponent) {\n      inherits(StyledComponent, _ParentComponent);\n\n      function StyledComponent() {\n        classCallCheck(this, StyledComponent);\n        return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments));\n      }\n\n      StyledComponent.withComponent = function withComponent(tag) {\n        var previousComponentId = options.componentId,\n            optionsToCopy = objectWithoutProperties(options, ['componentId']);\n\n\n        var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag)));\n\n        var newOptions = _extends({}, optionsToCopy, {\n          componentId: newComponentId,\n          ParentComponent: StyledComponent\n        });\n\n        return createStyledComponent(tag, newOptions, rules);\n      };\n\n      createClass(StyledComponent, null, [{\n        key: 'extend',\n        get: function get$$1() {\n          var rulesFromOptions = options.rules,\n              parentComponentId = options.componentId,\n              optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']);\n\n\n          var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules);\n\n          var newOptions = _extends({}, optionsToCopy, {\n            rules: newRules,\n            parentComponentId: parentComponentId,\n            ParentComponent: StyledComponent\n          });\n\n          return constructWithOptions(createStyledComponent, target, newOptions);\n        }\n      }]);\n      return StyledComponent;\n    }(ParentComponent);\n\n    StyledComponent.contextTypes = (_StyledComponent$cont = {}, _StyledComponent$cont[CHANNEL] = PropTypes.func, _StyledComponent$cont[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _StyledComponent$cont[CONTEXT_KEY] = PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]), _StyledComponent$cont);\n    StyledComponent.displayName = displayName;\n    StyledComponent.styledComponentId = styledComponentId;\n    StyledComponent.attrs = attrs;\n    StyledComponent.componentStyle = componentStyle;\n    StyledComponent.target = target;\n\n\n    if (process.env.NODE_ENV !== 'production') {\n      StyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);\n    }\n\n    return StyledComponent;\n  };\n\n  return createStyledComponent;\n});\n\n// murmurhash2 via https://gist.github.com/raycmorgan/588423\n\nfunction doHash(str, seed) {\n  var m = 0x5bd1e995;\n  var r = 24;\n  var h = seed ^ str.length;\n  var length = str.length;\n  var currentIndex = 0;\n\n  while (length >= 4) {\n    var k = UInt32(str, currentIndex);\n\n    k = Umul32(k, m);\n    k ^= k >>> r;\n    k = Umul32(k, m);\n\n    h = Umul32(h, m);\n    h ^= k;\n\n    currentIndex += 4;\n    length -= 4;\n  }\n\n  switch (length) {\n    case 3:\n      h ^= UInt16(str, currentIndex);\n      h ^= str.charCodeAt(currentIndex + 2) << 16;\n      h = Umul32(h, m);\n      break;\n\n    case 2:\n      h ^= UInt16(str, currentIndex);\n      h = Umul32(h, m);\n      break;\n\n    case 1:\n      h ^= str.charCodeAt(currentIndex);\n      h = Umul32(h, m);\n      break;\n  }\n\n  h ^= h >>> 13;\n  h = Umul32(h, m);\n  h ^= h >>> 15;\n\n  return h >>> 0;\n}\n\nfunction UInt32(str, pos) {\n  return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8) + (str.charCodeAt(pos++) << 16) + (str.charCodeAt(pos) << 24);\n}\n\nfunction UInt16(str, pos) {\n  return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8);\n}\n\nfunction Umul32(n, m) {\n  n = n | 0;\n  m = m | 0;\n  var nlo = n & 0xffff;\n  var nhi = n >>> 16;\n  var res = nlo * m + ((nhi * m & 0xffff) << 16) | 0;\n  return res;\n}\n\n//      \nvar isStaticRules = function isStaticRules(rules, attrs) {\n  for (var i = 0; i < rules.length; i += 1) {\n    var rule = rules[i];\n\n    // recursive case\n    if (Array.isArray(rule) && !isStaticRules(rule)) {\n      return false;\n    } else if (typeof rule === 'function' && !isStyledComponent(rule)) {\n      // functions are allowed to be static if they're just being\n      // used to get the classname of a nested styled copmonent\n      return false;\n    }\n  }\n\n  if (attrs !== undefined) {\n    // eslint-disable-next-line guard-for-in, no-restricted-syntax\n    for (var key in attrs) {\n      var value = attrs[key];\n      if (typeof value === 'function') {\n        return false;\n      }\n    }\n  }\n\n  return true;\n};\n\nvar isHRMEnabled = typeof module !== 'undefined' && module.hot && process.env.NODE_ENV !== 'production';\n\n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\nvar _ComponentStyle = (function (nameGenerator, flatten, stringifyRules) {\n  var ComponentStyle = function () {\n    function ComponentStyle(rules, attrs, componentId) {\n      classCallCheck(this, ComponentStyle);\n\n      this.rules = rules;\n      this.isStatic = !isHRMEnabled && isStaticRules(rules, attrs);\n      this.componentId = componentId;\n      if (!StyleSheet.instance.hasInjectedComponent(this.componentId)) {\n        var placeholder = process.env.NODE_ENV !== 'production' ? '.' + componentId + ' {}' : '';\n        StyleSheet.instance.deferredInject(componentId, true, placeholder);\n      }\n    }\n\n    /*\n     * Flattens a rule set into valid CSS\n     * Hashes it, wraps the whole chunk in a .hash1234 {}\n     * Returns the hash to be injected on render()\n     * */\n\n\n    ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n      var isStatic = this.isStatic,\n          lastClassName = this.lastClassName;\n\n      if (isStatic && lastClassName !== undefined) {\n        return lastClassName;\n      }\n\n      var flatCSS = flatten(this.rules, executionContext);\n      var hash = doHash(this.componentId + flatCSS.join(''));\n\n      var existingName = styleSheet.getName(hash);\n      if (existingName !== undefined) {\n        if (styleSheet.stylesCacheable) {\n          this.lastClassName = existingName;\n        }\n        return existingName;\n      }\n\n      var name = nameGenerator(hash);\n      if (styleSheet.stylesCacheable) {\n        this.lastClassName = existingName;\n      }\n      if (styleSheet.alreadyInjected(hash, name)) {\n        return name;\n      }\n\n      var css = '\\n' + stringifyRules(flatCSS, '.' + name);\n      // NOTE: this can only be set when we inject the class-name.\n      // For some reason, presumably due to how css is stringifyRules behaves in\n      // differently between client and server, styles break.\n      styleSheet.inject(this.componentId, true, css, hash, name);\n      return name;\n    };\n\n    ComponentStyle.generateName = function generateName(str) {\n      return nameGenerator(doHash(str));\n    };\n\n    return ComponentStyle;\n  }();\n\n  return ComponentStyle;\n});\n\n//      \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n//      \n\nvar _styled = (function (styledComponent, constructWithOptions) {\n  var styled = function styled(tag) {\n    return constructWithOptions(styledComponent, tag);\n  };\n\n  // Shorthands for all valid HTML Elements\n  domElements.forEach(function (domElement) {\n    styled[domElement] = styled(domElement);\n  });\n\n  return styled;\n});\n\n//      \nvar replaceWhitespace = function replaceWhitespace(str) {\n  return str.replace(/\\s|\\\\n/g, '');\n};\n\nvar _keyframes = (function (nameGenerator, stringifyRules, css) {\n  return function (strings) {\n    for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      interpolations[_key - 1] = arguments[_key];\n    }\n\n    var rules = css.apply(undefined, [strings].concat(interpolations));\n    var hash = doHash(replaceWhitespace(JSON.stringify(rules)));\n\n    var existingName = StyleSheet.instance.getName(hash);\n    if (existingName) return existingName;\n\n    var name = nameGenerator(hash);\n    if (StyleSheet.instance.alreadyInjected(hash, name)) return name;\n\n    var generatedCSS = stringifyRules(rules, name, '@keyframes');\n    StyleSheet.instance.inject('sc-keyframes-' + name, true, generatedCSS, hash, name);\n    return name;\n  };\n});\n\n//      \nvar _injectGlobal = (function (stringifyRules, css) {\n  var injectGlobal = function injectGlobal(strings) {\n    for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      interpolations[_key - 1] = arguments[_key];\n    }\n\n    var rules = css.apply(undefined, [strings].concat(interpolations));\n    var hash = doHash(JSON.stringify(rules));\n\n    var componentId = 'sc-global-' + hash;\n    if (StyleSheet.instance.hasInjectedComponent(componentId)) return;\n\n    StyleSheet.instance.inject(componentId, false, stringifyRules(rules));\n  };\n\n  return injectGlobal;\n});\n\n//      \n\n\nvar _constructWithOptions = (function (css) {\n  var constructWithOptions = function constructWithOptions(componentConstructor, tag) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    if (process.env.NODE_ENV !== 'production' && typeof tag !== 'string' && typeof tag !== 'function') {\n      // $FlowInvalidInputTest\n      throw new Error('Cannot create styled-component for component: ' + tag);\n    }\n\n    /* This is callable directly as a template function */\n    var templateFunction = function templateFunction(strings) {\n      for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        interpolations[_key - 1] = arguments[_key];\n      }\n\n      return componentConstructor(tag, options, css.apply(undefined, [strings].concat(interpolations)));\n    };\n\n    /* If config methods are called, wrap up a new template function and merge options */\n    templateFunction.withConfig = function (config) {\n      return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n    };\n    templateFunction.attrs = function (attrs) {\n      return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n        attrs: _extends({}, options.attrs || {}, attrs)\n      }));\n    };\n\n    return templateFunction;\n  };\n\n  return constructWithOptions;\n});\n\n//      \n/* globals ReactClass */\n\nvar wrapWithTheme = function wrapWithTheme(Component$$1) {\n  var _WithTheme$contextTyp;\n\n  var componentName = Component$$1.displayName || Component$$1.name || 'Component';\n\n  var shouldSetInnerRef = isStyledComponent(Component$$1) ||\n  // NOTE: We can't pass a ref to a stateless functional component\n  typeof Component$$1 === 'function' && !(Component$$1.prototype && 'isReactComponent' in Component$$1.prototype);\n\n  var WithTheme = function (_React$Component) {\n    inherits(WithTheme, _React$Component);\n\n    function WithTheme() {\n      var _temp, _this, _ret;\n\n      classCallCheck(this, WithTheme);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _this.unsubscribeId = -1, _temp), possibleConstructorReturn(_this, _ret);\n    }\n\n    // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping\n\n\n    WithTheme.prototype.componentWillMount = function componentWillMount() {\n      var _this2 = this;\n\n      var defaultProps = this.constructor.defaultProps;\n\n      var styledContext = this.context[CHANNEL_NEXT];\n      var themeProp = determineTheme(this.props, undefined, defaultProps);\n      if (styledContext === undefined && themeProp === undefined && process.env.NODE_ENV !== 'production') {\n        // eslint-disable-next-line no-console\n        console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps');\n      } else if (styledContext === undefined && themeProp !== undefined) {\n        this.setState({ theme: themeProp });\n      } else {\n        var subscribe = styledContext.subscribe;\n\n        this.unsubscribeId = subscribe(function (nextTheme) {\n          var theme = determineTheme(_this2.props, nextTheme, defaultProps);\n          _this2.setState({ theme: theme });\n        });\n      }\n    };\n\n    WithTheme.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var defaultProps = this.constructor.defaultProps;\n\n      this.setState(function (oldState) {\n        var theme = determineTheme(nextProps, oldState.theme, defaultProps);\n\n        return { theme: theme };\n      });\n    };\n\n    WithTheme.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.unsubscribeId !== -1) {\n        this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeId);\n      }\n    };\n\n    WithTheme.prototype.render = function render() {\n      // eslint-disable-next-line react/prop-types\n      var innerRef = this.props.innerRef;\n      var theme = this.state.theme;\n\n\n      return React.createElement(Component$$1, _extends({\n        theme: theme\n      }, this.props, {\n        innerRef: shouldSetInnerRef ? innerRef : undefined,\n        ref: shouldSetInnerRef ? undefined : innerRef\n      }));\n    };\n\n    return WithTheme;\n  }(React.Component);\n\n  WithTheme.displayName = 'WithTheme(' + componentName + ')';\n  WithTheme.styledComponentId = 'withTheme';\n  WithTheme.contextTypes = (_WithTheme$contextTyp = {}, _WithTheme$contextTyp[CHANNEL] = PropTypes.func, _WithTheme$contextTyp[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _WithTheme$contextTyp);\n\n\n  return hoistStatics(WithTheme, Component$$1);\n};\n\n//      \n\n/* Import singletons */\n/* Import singleton constructors */\n/* Import components */\n/* Import Higher Order Components */\n/* Instantiate singletons */\nvar ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules);\nvar constructWithOptions = _constructWithOptions(css);\nvar StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions);\n\n/* Instantiate exported singletons */\nvar keyframes = _keyframes(generateAlphabeticName, stringifyRules, css);\nvar injectGlobal = _injectGlobal(stringifyRules, css);\nvar styled = _styled(StyledComponent, constructWithOptions);\n\nexport { css, keyframes, injectGlobal, ThemeProvider, wrapWithTheme as withTheme, ServerStyleSheet, StyleSheetManager };export default styled;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n  INIT: '@@redux/INIT'\n\n  /**\n   * Creates a Redux store that holds the state tree.\n   * The only way to change the data in the store is to call `dispatch()` on it.\n   *\n   * There should only be a single store in your app. To specify how different\n   * parts of the state tree respond to actions, you may combine several reducers\n   * into a single reducer function by using `combineReducers`.\n   *\n   * @param {Function} reducer A function that returns the next state tree, given\n   * the current state tree and the action to handle.\n   *\n   * @param {any} [preloadedState] The initial state. You may optionally specify it\n   * to hydrate the state from the server in universal apps, or to restore a\n   * previously serialized user session.\n   * If you use `combineReducers` to produce the root reducer function, this must be\n   * an object with the same shape as `combineReducers` keys.\n   *\n   * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n   * to enhance the store with third-party capabilities such as middleware,\n   * time travel, persistence, etc. The only store enhancer that ships with Redux\n   * is `applyMiddleware()`.\n   *\n   * @returns {Store} A Redux store that lets you read the state, dispatch actions\n   * and subscribe to changes.\n   */\n};export default function createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error('Expected the enhancer to be a function.');\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error('Expected the reducer to be a function.');\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n  function getState() {\n    return currentState;\n  }\n\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error('Expected listener to be a function.');\n    }\n\n    var isSubscribed = true;\n\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      isSubscribed = false;\n\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n    };\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n    }\n\n    if (isDispatching) {\n      throw new Error('Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error('Expected the nextReducer to be a function.');\n    }\n\n    currentReducer = nextReducer;\n    dispatch({ type: ActionTypes.INIT });\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object') {\n          throw new TypeError('Expected the observer to be an object.');\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return { unsubscribe: unsubscribe };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch({ type: ActionTypes.INIT });\n\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n  var actionType = action && action.type;\n  var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n  return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n\n  if (unexpectedKeys.length > 0) {\n    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n    }\n\n    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n    if (typeof reducer(undefined, { type: type }) === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n    }\n  });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning('No reducer provided for key \"' + key + '\"');\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  var finalReducerKeys = Object.keys(finalReducers);\n\n  var unexpectedKeyCache = void 0;\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError = void 0;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination() {\n    var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var action = arguments[1];\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === 'undefined') {\n        var errorMessage = getUndefinedStateErrorMessage(_key, action);\n        throw new Error(errorMessage);\n      }\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    return hasChanged ? nextState : state;\n  };\n}","function bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(undefined, arguments));\n  };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n  }\n\n  var keys = Object.keys(actionCreators);\n  var boundActionCreators = {};\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var actionCreator = actionCreators[key];\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n  return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(undefined, arguments));\n    };\n  });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function (reducer, preloadedState, enhancer) {\n      var store = createStore(reducer, preloadedState, enhancer);\n      var _dispatch = store.dispatch;\n      var chain = [];\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch(action) {\n          return _dispatch(action);\n        }\n      };\n      chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n      return _extends({}, store, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","import createEmotion from 'create-emotion';\n\nvar context = typeof global !== 'undefined' ? global : {};\n\nvar _createEmotion = createEmotion(context),\n    flush = _createEmotion.flush,\n    hydrate = _createEmotion.hydrate,\n    cx = _createEmotion.cx,\n    merge = _createEmotion.merge,\n    getRegisteredStyles = _createEmotion.getRegisteredStyles,\n    injectGlobal = _createEmotion.injectGlobal,\n    keyframes = _createEmotion.keyframes,\n    css = _createEmotion.css,\n    sheet = _createEmotion.sheet,\n    caches = _createEmotion.caches;\n\nexport { flush, hydrate, cx, merge, getRegisteredStyles, injectGlobal, keyframes, css, sheet, caches };\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","import invariant from 'invariant';\n\nfunction escapeRegExp(string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction _compilePattern(pattern) {\n  var regexpSource = '';\n  var paramNames = [];\n  var tokens = [];\n\n  var match = void 0,\n      lastIndex = 0,\n      matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\\*\\*|\\*|\\(|\\)|\\\\\\(|\\\\\\)/g;\n  while (match = matcher.exec(pattern)) {\n    if (match.index !== lastIndex) {\n      tokens.push(pattern.slice(lastIndex, match.index));\n      regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));\n    }\n\n    if (match[1]) {\n      regexpSource += '([^/]+)';\n      paramNames.push(match[1]);\n    } else if (match[0] === '**') {\n      regexpSource += '(.*)';\n      paramNames.push('splat');\n    } else if (match[0] === '*') {\n      regexpSource += '(.*?)';\n      paramNames.push('splat');\n    } else if (match[0] === '(') {\n      regexpSource += '(?:';\n    } else if (match[0] === ')') {\n      regexpSource += ')?';\n    } else if (match[0] === '\\\\(') {\n      regexpSource += '\\\\(';\n    } else if (match[0] === '\\\\)') {\n      regexpSource += '\\\\)';\n    }\n\n    tokens.push(match[0]);\n\n    lastIndex = matcher.lastIndex;\n  }\n\n  if (lastIndex !== pattern.length) {\n    tokens.push(pattern.slice(lastIndex, pattern.length));\n    regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));\n  }\n\n  return {\n    pattern: pattern,\n    regexpSource: regexpSource,\n    paramNames: paramNames,\n    tokens: tokens\n  };\n}\n\nvar CompiledPatternsCache = Object.create(null);\n\nexport function compilePattern(pattern) {\n  if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);\n\n  return CompiledPatternsCache[pattern];\n}\n\n/**\n * Attempts to match a pattern on the given pathname. Patterns may use\n * the following special characters:\n *\n * - :paramName     Matches a URL segment up to the next /, ?, or #. The\n *                  captured string is considered a \"param\"\n * - ()             Wraps a segment of the URL that is optional\n * - *              Consumes (non-greedy) all characters up to the next\n *                  character in the pattern, or to the end of the URL if\n *                  there is none\n * - **             Consumes (greedy) all characters up to the next character\n *                  in the pattern, or to the end of the URL if there is none\n *\n *  The function calls callback(error, matched) when finished.\n * The return value is an object with the following properties:\n *\n * - remainingPathname\n * - paramNames\n * - paramValues\n */\nexport function matchPattern(pattern, pathname) {\n  // Ensure pattern starts with leading slash for consistency with pathname.\n  if (pattern.charAt(0) !== '/') {\n    pattern = '/' + pattern;\n  }\n\n  var _compilePattern2 = compilePattern(pattern),\n      regexpSource = _compilePattern2.regexpSource,\n      paramNames = _compilePattern2.paramNames,\n      tokens = _compilePattern2.tokens;\n\n  if (pattern.charAt(pattern.length - 1) !== '/') {\n    regexpSource += '/?'; // Allow optional path separator at end.\n  }\n\n  // Special-case patterns like '*' for catch-all routes.\n  if (tokens[tokens.length - 1] === '*') {\n    regexpSource += '$';\n  }\n\n  var match = pathname.match(new RegExp('^' + regexpSource, 'i'));\n  if (match == null) {\n    return null;\n  }\n\n  var matchedPath = match[0];\n  var remainingPathname = pathname.substr(matchedPath.length);\n\n  if (remainingPathname) {\n    // Require that the match ends at a path separator, if we didn't match\n    // the full path, so any remaining pathname is a new path segment.\n    if (matchedPath.charAt(matchedPath.length - 1) !== '/') {\n      return null;\n    }\n\n    // If there is a remaining pathname, treat the path separator as part of\n    // the remaining pathname for properly continuing the match.\n    remainingPathname = '/' + remainingPathname;\n  }\n\n  return {\n    remainingPathname: remainingPathname,\n    paramNames: paramNames,\n    paramValues: match.slice(1).map(function (v) {\n      return v && decodeURIComponent(v);\n    })\n  };\n}\n\nexport function getParamNames(pattern) {\n  return compilePattern(pattern).paramNames;\n}\n\nexport function getParams(pattern, pathname) {\n  var match = matchPattern(pattern, pathname);\n  if (!match) {\n    return null;\n  }\n\n  var paramNames = match.paramNames,\n      paramValues = match.paramValues;\n\n  var params = {};\n\n  paramNames.forEach(function (paramName, index) {\n    params[paramName] = paramValues[index];\n  });\n\n  return params;\n}\n\n/**\n * Returns a version of the given pattern with params interpolated. Throws\n * if there is a dynamic segment of the pattern for which there is no param.\n */\nexport function formatPattern(pattern, params) {\n  params = params || {};\n\n  var _compilePattern3 = compilePattern(pattern),\n      tokens = _compilePattern3.tokens;\n\n  var parenCount = 0,\n      pathname = '',\n      splatIndex = 0,\n      parenHistory = [];\n\n  var token = void 0,\n      paramName = void 0,\n      paramValue = void 0;\n  for (var i = 0, len = tokens.length; i < len; ++i) {\n    token = tokens[i];\n\n    if (token === '*' || token === '**') {\n      paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;\n\n      !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing splat #%s for path \"%s\"', splatIndex, pattern) : invariant(false) : void 0;\n\n      if (paramValue != null) pathname += encodeURI(paramValue);\n    } else if (token === '(') {\n      parenHistory[parenCount] = '';\n      parenCount += 1;\n    } else if (token === ')') {\n      var parenText = parenHistory.pop();\n      parenCount -= 1;\n\n      if (parenCount) parenHistory[parenCount - 1] += parenText;else pathname += parenText;\n    } else if (token === '\\\\(') {\n      pathname += '(';\n    } else if (token === '\\\\)') {\n      pathname += ')';\n    } else if (token.charAt(0) === ':') {\n      paramName = token.substring(1);\n      paramValue = params[paramName];\n\n      !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing \"%s\" parameter for path \"%s\"', paramName, pattern) : invariant(false) : void 0;\n\n      if (paramValue == null) {\n        if (parenCount) {\n          parenHistory[parenCount - 1] = '';\n\n          var curTokenIdx = tokens.indexOf(token);\n          var tokensSubset = tokens.slice(curTokenIdx, tokens.length);\n          var nextParenIdx = -1;\n\n          for (var _i = 0; _i < tokensSubset.length; _i++) {\n            if (tokensSubset[_i] == ')') {\n              nextParenIdx = _i;\n              break;\n            }\n          }\n\n          !(nextParenIdx > 0) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Path \"%s\" is missing end paren at segment \"%s\"', pattern, tokensSubset.join('')) : invariant(false) : void 0;\n\n          // jump to ending paren\n          i = curTokenIdx + nextParenIdx - 1;\n        }\n      } else if (parenCount) parenHistory[parenCount - 1] += encodeURIComponent(paramValue);else pathname += encodeURIComponent(paramValue);\n    } else {\n      if (parenCount) parenHistory[parenCount - 1] += token;else pathname += token;\n    }\n  }\n\n  !(parenCount <= 0) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Path \"%s\" is missing end paren', pattern) : invariant(false) : void 0;\n\n  return pathname.replace(/\\/+/g, '/');\n}","import { getParamNames } from './PatternUtils';\n\nfunction routeParamsChanged(route, prevState, nextState) {\n  if (!route.path) return false;\n\n  var paramNames = getParamNames(route.path);\n\n  return paramNames.some(function (paramName) {\n    return prevState.params[paramName] !== nextState.params[paramName];\n  });\n}\n\n/**\n * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by\n * the change from prevState to nextState. We leave routes if either\n * 1) they are not in the next state or 2) they are in the next state\n * but their params have changed (i.e. /users/123 => /users/456).\n *\n * leaveRoutes are ordered starting at the leaf route of the tree\n * we're leaving up to the common parent route. enterRoutes are ordered\n * from the top of the tree we're entering down to the leaf route.\n *\n * changeRoutes are any routes that didn't leave or enter during\n * the transition.\n */\nfunction computeChangedRoutes(prevState, nextState) {\n  var prevRoutes = prevState && prevState.routes;\n  var nextRoutes = nextState.routes;\n\n  var leaveRoutes = void 0,\n      changeRoutes = void 0,\n      enterRoutes = void 0;\n  if (prevRoutes) {\n    var parentIsLeaving = false;\n    leaveRoutes = prevRoutes.filter(function (route) {\n      if (parentIsLeaving) {\n        return true;\n      } else {\n        var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);\n        if (isLeaving) parentIsLeaving = true;\n        return isLeaving;\n      }\n    });\n\n    // onLeave hooks start at the leaf route.\n    leaveRoutes.reverse();\n\n    enterRoutes = [];\n    changeRoutes = [];\n\n    nextRoutes.forEach(function (route) {\n      var isNew = prevRoutes.indexOf(route) === -1;\n      var paramsChanged = leaveRoutes.indexOf(route) !== -1;\n\n      if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);\n    });\n  } else {\n    leaveRoutes = [];\n    changeRoutes = [];\n    enterRoutes = nextRoutes;\n  }\n\n  return {\n    leaveRoutes: leaveRoutes,\n    changeRoutes: changeRoutes,\n    enterRoutes: enterRoutes\n  };\n}\n\nexport default computeChangedRoutes;","export function loopAsync(turns, work, callback) {\n  var currentTurn = 0,\n      isDone = false;\n  var sync = false,\n      hasNext = false,\n      doneArgs = void 0;\n\n  function done() {\n    isDone = true;\n    if (sync) {\n      // Iterate instead of recursing if possible.\n      doneArgs = [].concat(Array.prototype.slice.call(arguments));\n      return;\n    }\n\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) {\n      return;\n    }\n\n    hasNext = true;\n    if (sync) {\n      // Iterate instead of recursing if possible.\n      return;\n    }\n\n    sync = true;\n\n    while (!isDone && currentTurn < turns && hasNext) {\n      hasNext = false;\n      work.call(this, currentTurn++, next, done);\n    }\n\n    sync = false;\n\n    if (isDone) {\n      // This means the loop finished synchronously.\n      callback.apply(this, doneArgs);\n      return;\n    }\n\n    if (currentTurn >= turns && hasNext) {\n      isDone = true;\n      callback();\n    }\n  }\n\n  next();\n}\n\nexport function mapAsync(array, work, callback) {\n  var length = array.length;\n  var values = [];\n\n  if (length === 0) return callback(null, values);\n\n  var isDone = false,\n      doneCount = 0;\n\n  function done(index, error, value) {\n    if (isDone) return;\n\n    if (error) {\n      isDone = true;\n      callback(error);\n    } else {\n      values[index] = value;\n\n      isDone = ++doneCount === length;\n\n      if (isDone) callback(null, values);\n    }\n  }\n\n  array.forEach(function (item, index) {\n    work(item, index, function (error, value) {\n      done(index, error, value);\n    });\n  });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { loopAsync } from './AsyncUtils';\n\nvar PendingHooks = function PendingHooks() {\n  var _this = this;\n\n  _classCallCheck(this, PendingHooks);\n\n  this.hooks = [];\n\n  this.add = function (hook) {\n    return _this.hooks.push(hook);\n  };\n\n  this.remove = function (hook) {\n    return _this.hooks = _this.hooks.filter(function (h) {\n      return h !== hook;\n    });\n  };\n\n  this.has = function (hook) {\n    return _this.hooks.indexOf(hook) !== -1;\n  };\n\n  this.clear = function () {\n    return _this.hooks = [];\n  };\n};\n\nexport default function getTransitionUtils() {\n  var enterHooks = new PendingHooks();\n  var changeHooks = new PendingHooks();\n\n  function createTransitionHook(hook, route, asyncArity, pendingHooks) {\n    var isSync = hook.length < asyncArity;\n\n    var transitionHook = function transitionHook() {\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      hook.apply(route, args);\n\n      if (isSync) {\n        var callback = args[args.length - 1];\n        // Assume hook executes synchronously and\n        // automatically call the callback.\n        callback();\n      }\n    };\n\n    pendingHooks.add(transitionHook);\n\n    return transitionHook;\n  }\n\n  function getEnterHooks(routes) {\n    return routes.reduce(function (hooks, route) {\n      if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3, enterHooks));\n      return hooks;\n    }, []);\n  }\n\n  function getChangeHooks(routes) {\n    return routes.reduce(function (hooks, route) {\n      if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4, changeHooks));\n      return hooks;\n    }, []);\n  }\n\n  function runTransitionHooks(length, iter, callback) {\n    if (!length) {\n      callback();\n      return;\n    }\n\n    var redirectInfo = void 0;\n    function replace(location) {\n      redirectInfo = location;\n    }\n\n    loopAsync(length, function (index, next, done) {\n      iter(index, replace, function (error) {\n        if (error || redirectInfo) {\n          done(error, redirectInfo); // No need to continue.\n        } else {\n          next();\n        }\n      });\n    }, callback);\n  }\n\n  /**\n   * Runs all onEnter hooks in the given array of routes in order\n   * with onEnter(nextState, replace, callback) and calls\n   * callback(error, redirectInfo) when finished. The first hook\n   * to use replace short-circuits the loop.\n   *\n   * If a hook needs to run asynchronously, it may use the callback\n   * function. However, doing so will cause the transition to pause,\n   * which could lead to a non-responsive UI if the hook is slow.\n   */\n  function runEnterHooks(routes, nextState, callback) {\n    enterHooks.clear();\n    var hooks = getEnterHooks(routes);\n    return runTransitionHooks(hooks.length, function (index, replace, next) {\n      var wrappedNext = function wrappedNext() {\n        if (enterHooks.has(hooks[index])) {\n          next.apply(undefined, arguments);\n          enterHooks.remove(hooks[index]);\n        }\n      };\n      hooks[index](nextState, replace, wrappedNext);\n    }, callback);\n  }\n\n  /**\n   * Runs all onChange hooks in the given array of routes in order\n   * with onChange(prevState, nextState, replace, callback) and calls\n   * callback(error, redirectInfo) when finished. The first hook\n   * to use replace short-circuits the loop.\n   *\n   * If a hook needs to run asynchronously, it may use the callback\n   * function. However, doing so will cause the transition to pause,\n   * which could lead to a non-responsive UI if the hook is slow.\n   */\n  function runChangeHooks(routes, state, nextState, callback) {\n    changeHooks.clear();\n    var hooks = getChangeHooks(routes);\n    return runTransitionHooks(hooks.length, function (index, replace, next) {\n      var wrappedNext = function wrappedNext() {\n        if (changeHooks.has(hooks[index])) {\n          next.apply(undefined, arguments);\n          changeHooks.remove(hooks[index]);\n        }\n      };\n      hooks[index](state, nextState, replace, wrappedNext);\n    }, callback);\n  }\n\n  /**\n   * Runs all onLeave hooks in the given array of routes in order.\n   */\n  function runLeaveHooks(routes, prevState) {\n    for (var i = 0, len = routes.length; i < len; ++i) {\n      if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);\n    }\n  }\n\n  return {\n    runEnterHooks: runEnterHooks,\n    runChangeHooks: runChangeHooks,\n    runLeaveHooks: runLeaveHooks\n  };\n}","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport { matchPattern } from './PatternUtils';\n\nfunction deepEqual(a, b) {\n  if (a == b) return true;\n\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n      return deepEqual(item, b[index]);\n    });\n  }\n\n  if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {\n    for (var p in a) {\n      if (!Object.prototype.hasOwnProperty.call(a, p)) {\n        continue;\n      }\n\n      if (a[p] === undefined) {\n        if (b[p] !== undefined) {\n          return false;\n        }\n      } else if (!Object.prototype.hasOwnProperty.call(b, p)) {\n        return false;\n      } else if (!deepEqual(a[p], b[p])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return String(a) === String(b);\n}\n\n/**\n * Returns true if the current pathname matches the supplied one, net of\n * leading and trailing slash normalization. This is sufficient for an\n * indexOnly route match.\n */\nfunction pathIsActive(pathname, currentPathname) {\n  // Normalize leading slash for consistency. Leading slash on pathname has\n  // already been normalized in isActive. See caveat there.\n  if (currentPathname.charAt(0) !== '/') {\n    currentPathname = '/' + currentPathname;\n  }\n\n  // Normalize the end of both path names too. Maybe `/foo/` shouldn't show\n  // `/foo` as active, but in this case, we would already have failed the\n  // match.\n  if (pathname.charAt(pathname.length - 1) !== '/') {\n    pathname += '/';\n  }\n  if (currentPathname.charAt(currentPathname.length - 1) !== '/') {\n    currentPathname += '/';\n  }\n\n  return currentPathname === pathname;\n}\n\n/**\n * Returns true if the given pathname matches the active routes and params.\n */\nfunction routeIsActive(pathname, routes, params) {\n  var remainingPathname = pathname,\n      paramNames = [],\n      paramValues = [];\n\n  // for...of would work here but it's probably slower post-transpilation.\n  for (var i = 0, len = routes.length; i < len; ++i) {\n    var route = routes[i];\n    var pattern = route.path || '';\n\n    if (pattern.charAt(0) === '/') {\n      remainingPathname = pathname;\n      paramNames = [];\n      paramValues = [];\n    }\n\n    if (remainingPathname !== null && pattern) {\n      var matched = matchPattern(pattern, remainingPathname);\n      if (matched) {\n        remainingPathname = matched.remainingPathname;\n        paramNames = [].concat(paramNames, matched.paramNames);\n        paramValues = [].concat(paramValues, matched.paramValues);\n      } else {\n        remainingPathname = null;\n      }\n\n      if (remainingPathname === '') {\n        // We have an exact match on the route. Just check that all the params\n        // match.\n        // FIXME: This doesn't work on repeated params.\n        return paramNames.every(function (paramName, index) {\n          return String(paramValues[index]) === String(params[paramName]);\n        });\n      }\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if all key/value pairs in the given query are\n * currently active.\n */\nfunction queryIsActive(query, activeQuery) {\n  if (activeQuery == null) return query == null;\n\n  if (query == null) return true;\n\n  return deepEqual(query, activeQuery);\n}\n\n/**\n * Returns true if a <Link> to the given pathname/query combination is\n * currently active.\n */\nexport default function isActive(_ref, indexOnly, currentLocation, routes, params) {\n  var pathname = _ref.pathname,\n      query = _ref.query;\n\n  if (currentLocation == null) return false;\n\n  // TODO: This is a bit ugly. It keeps around support for treating pathnames\n  // without preceding slashes as absolute paths, but possibly also works\n  // around the same quirks with basenames as in matchRoutes.\n  if (pathname.charAt(0) !== '/') {\n    pathname = '/' + pathname;\n  }\n\n  if (!pathIsActive(pathname, currentLocation.pathname)) {\n    // The path check is necessary and sufficient for indexOnly, but otherwise\n    // we still need to check the routes.\n    if (indexOnly || !routeIsActive(pathname, routes, params)) {\n      return false;\n    }\n  }\n\n  return queryIsActive(query, currentLocation.query);\n}","export function isPromise(obj) {\n  return obj && typeof obj.then === 'function';\n}","import { mapAsync } from './AsyncUtils';\nimport { isPromise } from './PromiseUtils';\n\nfunction getComponentsForRoute(nextState, route, callback) {\n  if (route.component || route.components) {\n    callback(null, route.component || route.components);\n    return;\n  }\n\n  var getComponent = route.getComponent || route.getComponents;\n  if (getComponent) {\n    var componentReturn = getComponent.call(route, nextState, callback);\n    if (isPromise(componentReturn)) componentReturn.then(function (component) {\n      return callback(null, component);\n    }, callback);\n  } else {\n    callback();\n  }\n}\n\n/**\n * Asynchronously fetches all components needed for the given router\n * state and calls callback(error, components) when finished.\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getComponents method.\n */\nfunction getComponents(nextState, callback) {\n  mapAsync(nextState.routes, function (route, index, callback) {\n    getComponentsForRoute(nextState, route, callback);\n  }, callback);\n}\n\nexport default getComponents;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\n\nfunction isValidChild(object) {\n  return object == null || React.isValidElement(object);\n}\n\nexport function isReactChildren(object) {\n  return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nfunction createRoute(defaultProps, props) {\n  return _extends({}, defaultProps, props);\n}\n\nexport function createRouteFromReactElement(element) {\n  var type = element.type;\n  var route = createRoute(type.defaultProps, element.props);\n\n  if (route.children) {\n    var childRoutes = createRoutesFromReactChildren(route.children, route);\n\n    if (childRoutes.length) route.childRoutes = childRoutes;\n\n    delete route.children;\n  }\n\n  return route;\n}\n\n/**\n * Creates and returns a routes object from the given ReactChildren. JSX\n * provides a convenient way to visualize how routes in the hierarchy are\n * nested.\n *\n *   import { Route, createRoutesFromReactChildren } from 'react-router'\n *\n *   const routes = createRoutesFromReactChildren(\n *     <Route component={App}>\n *       <Route path=\"home\" component={Dashboard}/>\n *       <Route path=\"news\" component={NewsFeed}/>\n *     </Route>\n *   )\n *\n * Note: This method is automatically used when you provide <Route> children\n * to a <Router> component.\n */\nexport function createRoutesFromReactChildren(children, parentRoute) {\n  var routes = [];\n\n  React.Children.forEach(children, function (element) {\n    if (React.isValidElement(element)) {\n      // Component classes may have a static create* method.\n      if (element.type.createRouteFromReactElement) {\n        var route = element.type.createRouteFromReactElement(element, parentRoute);\n\n        if (route) routes.push(route);\n      } else {\n        routes.push(createRouteFromReactElement(element));\n      }\n    }\n  });\n\n  return routes;\n}\n\n/**\n * Creates and returns an array of routes from the given object which\n * may be a JSX route, a plain object route, or an array of either.\n */\nexport function createRoutes(routes) {\n  if (isReactChildren(routes)) {\n    routes = createRoutesFromReactChildren(routes);\n  } else if (routes && !Array.isArray(routes)) {\n    routes = [routes];\n  }\n\n  return routes;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport { loopAsync } from './AsyncUtils';\nimport { isPromise } from './PromiseUtils';\nimport { matchPattern } from './PatternUtils';\nimport warning from './routerWarning';\nimport { createRoutes } from './RouteUtils';\n\nfunction getChildRoutes(route, location, paramNames, paramValues, callback) {\n  if (route.childRoutes) {\n    return [null, route.childRoutes];\n  }\n  if (!route.getChildRoutes) {\n    return [];\n  }\n\n  var sync = true,\n      result = void 0;\n\n  var partialNextState = {\n    location: location,\n    params: createParams(paramNames, paramValues)\n  };\n\n  var childRoutesReturn = route.getChildRoutes(partialNextState, function (error, childRoutes) {\n    childRoutes = !error && createRoutes(childRoutes);\n    if (sync) {\n      result = [error, childRoutes];\n      return;\n    }\n\n    callback(error, childRoutes);\n  });\n\n  if (isPromise(childRoutesReturn)) childRoutesReturn.then(function (childRoutes) {\n    return callback(null, createRoutes(childRoutes));\n  }, callback);\n\n  sync = false;\n  return result; // Might be undefined.\n}\n\nfunction getIndexRoute(route, location, paramNames, paramValues, callback) {\n  if (route.indexRoute) {\n    callback(null, route.indexRoute);\n  } else if (route.getIndexRoute) {\n    var partialNextState = {\n      location: location,\n      params: createParams(paramNames, paramValues)\n    };\n\n    var indexRoutesReturn = route.getIndexRoute(partialNextState, function (error, indexRoute) {\n      callback(error, !error && createRoutes(indexRoute)[0]);\n    });\n\n    if (isPromise(indexRoutesReturn)) indexRoutesReturn.then(function (indexRoute) {\n      return callback(null, createRoutes(indexRoute)[0]);\n    }, callback);\n  } else if (route.childRoutes || route.getChildRoutes) {\n    var onChildRoutes = function onChildRoutes(error, childRoutes) {\n      if (error) {\n        callback(error);\n        return;\n      }\n\n      var pathless = childRoutes.filter(function (childRoute) {\n        return !childRoute.path;\n      });\n\n      loopAsync(pathless.length, function (index, next, done) {\n        getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {\n          if (error || indexRoute) {\n            var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);\n            done(error, routes);\n          } else {\n            next();\n          }\n        });\n      }, function (err, routes) {\n        callback(null, routes);\n      });\n    };\n\n    var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n    if (result) {\n      onChildRoutes.apply(undefined, result);\n    }\n  } else {\n    callback();\n  }\n}\n\nfunction assignParams(params, paramNames, paramValues) {\n  return paramNames.reduce(function (params, paramName, index) {\n    var paramValue = paramValues && paramValues[index];\n\n    if (Array.isArray(params[paramName])) {\n      params[paramName].push(paramValue);\n    } else if (paramName in params) {\n      params[paramName] = [params[paramName], paramValue];\n    } else {\n      params[paramName] = paramValue;\n    }\n\n    return params;\n  }, params);\n}\n\nfunction createParams(paramNames, paramValues) {\n  return assignParams({}, paramNames, paramValues);\n}\n\nfunction matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {\n  var pattern = route.path || '';\n\n  if (pattern.charAt(0) === '/') {\n    remainingPathname = location.pathname;\n    paramNames = [];\n    paramValues = [];\n  }\n\n  // Only try to match the path if the route actually has a pattern, and if\n  // we're not just searching for potential nested absolute paths.\n  if (remainingPathname !== null && pattern) {\n    try {\n      var matched = matchPattern(pattern, remainingPathname);\n      if (matched) {\n        remainingPathname = matched.remainingPathname;\n        paramNames = [].concat(paramNames, matched.paramNames);\n        paramValues = [].concat(paramValues, matched.paramValues);\n      } else {\n        remainingPathname = null;\n      }\n    } catch (error) {\n      callback(error);\n    }\n\n    // By assumption, pattern is non-empty here, which is the prerequisite for\n    // actually terminating a match.\n    if (remainingPathname === '') {\n      var match = {\n        routes: [route],\n        params: createParams(paramNames, paramValues)\n      };\n\n      getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {\n        if (error) {\n          callback(error);\n        } else {\n          if (Array.isArray(indexRoute)) {\n            var _match$routes;\n\n            process.env.NODE_ENV !== 'production' ? warning(indexRoute.every(function (route) {\n              return !route.path;\n            }), 'Index routes should not have paths') : void 0;\n            (_match$routes = match.routes).push.apply(_match$routes, indexRoute);\n          } else if (indexRoute) {\n            process.env.NODE_ENV !== 'production' ? warning(!indexRoute.path, 'Index routes should not have paths') : void 0;\n            match.routes.push(indexRoute);\n          }\n\n          callback(null, match);\n        }\n      });\n\n      return;\n    }\n  }\n\n  if (remainingPathname != null || route.childRoutes) {\n    // Either a) this route matched at least some of the path or b)\n    // we don't have to load this route's children asynchronously. In\n    // either case continue checking for matches in the subtree.\n    var onChildRoutes = function onChildRoutes(error, childRoutes) {\n      if (error) {\n        callback(error);\n      } else if (childRoutes) {\n        // Check the child routes to see if any of them match.\n        matchRoutes(childRoutes, location, function (error, match) {\n          if (error) {\n            callback(error);\n          } else if (match) {\n            // A child route matched! Augment the match and pass it up the stack.\n            match.routes.unshift(route);\n            callback(null, match);\n          } else {\n            callback();\n          }\n        }, remainingPathname, paramNames, paramValues);\n      } else {\n        callback();\n      }\n    };\n\n    var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n    if (result) {\n      onChildRoutes.apply(undefined, result);\n    }\n  } else {\n    callback();\n  }\n}\n\n/**\n * Asynchronously matches the given location to a set of routes and calls\n * callback(error, state) when finished. The state object will have the\n * following properties:\n *\n * - routes       An array of routes that matched, in hierarchical order\n * - params       An object of URL parameters\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getChildRoutes method.\n */\nexport default function matchRoutes(routes, location, callback, remainingPathname) {\n  var paramNames = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n  var paramValues = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n\n  if (remainingPathname === undefined) {\n    // TODO: This is a little bit ugly, but it works around a quirk in history\n    // that strips the leading slash from pathnames when using basenames with\n    // trailing slashes.\n    if (location.pathname.charAt(0) !== '/') {\n      location = _extends({}, location, {\n        pathname: '/' + location.pathname\n      });\n    }\n    remainingPathname = location.pathname;\n  }\n\n  loopAsync(routes.length, function (index, next, done) {\n    matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {\n      if (error || match) {\n        done(error, match);\n      } else {\n        next();\n      }\n    });\n  }, callback);\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from './routerWarning';\nimport computeChangedRoutes from './computeChangedRoutes';\nimport getTransitionUtils from './TransitionUtils';\nimport _isActive from './isActive';\nimport getComponents from './getComponents';\nimport matchRoutes from './matchRoutes';\n\nfunction hasAnyProperties(object) {\n  for (var p in object) {\n    if (Object.prototype.hasOwnProperty.call(object, p)) return true;\n  }return false;\n}\n\nexport default function createTransitionManager(history, routes) {\n  var state = {};\n\n  var _getTransitionUtils = getTransitionUtils(),\n      runEnterHooks = _getTransitionUtils.runEnterHooks,\n      runChangeHooks = _getTransitionUtils.runChangeHooks,\n      runLeaveHooks = _getTransitionUtils.runLeaveHooks;\n\n  // Signature should be (location, indexOnly), but needs to support (path,\n  // query, indexOnly)\n\n\n  function isActive(location, indexOnly) {\n    location = history.createLocation(location);\n\n    return _isActive(location, indexOnly, state.location, state.routes, state.params);\n  }\n\n  var partialNextState = void 0;\n\n  function match(location, callback) {\n    if (partialNextState && partialNextState.location === location) {\n      // Continue from where we left off.\n      finishMatch(partialNextState, callback);\n    } else {\n      matchRoutes(routes, location, function (error, nextState) {\n        if (error) {\n          callback(error);\n        } else if (nextState) {\n          finishMatch(_extends({}, nextState, { location: location }), callback);\n        } else {\n          callback();\n        }\n      });\n    }\n  }\n\n  function finishMatch(nextState, callback) {\n    var _computeChangedRoutes = computeChangedRoutes(state, nextState),\n        leaveRoutes = _computeChangedRoutes.leaveRoutes,\n        changeRoutes = _computeChangedRoutes.changeRoutes,\n        enterRoutes = _computeChangedRoutes.enterRoutes;\n\n    runLeaveHooks(leaveRoutes, state);\n\n    // Tear down confirmation hooks for left routes\n    leaveRoutes.filter(function (route) {\n      return enterRoutes.indexOf(route) === -1;\n    }).forEach(removeListenBeforeHooksForRoute);\n\n    // change and enter hooks are run in series\n    runChangeHooks(changeRoutes, state, nextState, function (error, redirectInfo) {\n      if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n      runEnterHooks(enterRoutes, nextState, finishEnterHooks);\n    });\n\n    function finishEnterHooks(error, redirectInfo) {\n      if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n      // TODO: Fetch components after state is updated.\n      getComponents(nextState, function (error, components) {\n        if (error) {\n          callback(error);\n        } else {\n          // TODO: Make match a pure function and have some other API\n          // for \"match and update state\".\n          callback(null, null, state = _extends({}, nextState, { components: components }));\n        }\n      });\n    }\n\n    function handleErrorOrRedirect(error, redirectInfo) {\n      if (error) callback(error);else callback(null, redirectInfo);\n    }\n  }\n\n  var RouteGuid = 1;\n\n  function getRouteID(route) {\n    var create = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    return route.__id__ || create && (route.__id__ = RouteGuid++);\n  }\n\n  var RouteHooks = Object.create(null);\n\n  function getRouteHooksForRoutes(routes) {\n    return routes.map(function (route) {\n      return RouteHooks[getRouteID(route)];\n    }).filter(function (hook) {\n      return hook;\n    });\n  }\n\n  function transitionHook(location, callback) {\n    matchRoutes(routes, location, function (error, nextState) {\n      if (nextState == null) {\n        // TODO: We didn't actually match anything, but hang\n        // onto error/nextState so we don't have to matchRoutes\n        // again in the listen callback.\n        callback();\n        return;\n      }\n\n      // Cache some state here so we don't have to\n      // matchRoutes() again in the listen callback.\n      partialNextState = _extends({}, nextState, { location: location });\n\n      var hooks = getRouteHooksForRoutes(computeChangedRoutes(state, partialNextState).leaveRoutes);\n\n      var result = void 0;\n      for (var i = 0, len = hooks.length; result == null && i < len; ++i) {\n        // Passing the location arg here indicates to\n        // the user that this is a transition hook.\n        result = hooks[i](location);\n      }\n\n      callback(result);\n    });\n  }\n\n  /* istanbul ignore next: untestable with Karma */\n  function beforeUnloadHook() {\n    // Synchronously check to see if any route hooks want\n    // to prevent the current window/tab from closing.\n    if (state.routes) {\n      var hooks = getRouteHooksForRoutes(state.routes);\n\n      var message = void 0;\n      for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {\n        // Passing no args indicates to the user that this is a\n        // beforeunload hook. We don't know the next location.\n        message = hooks[i]();\n      }\n\n      return message;\n    }\n  }\n\n  var unlistenBefore = void 0,\n      unlistenBeforeUnload = void 0;\n\n  function removeListenBeforeHooksForRoute(route) {\n    var routeID = getRouteID(route);\n    if (!routeID) {\n      return;\n    }\n\n    delete RouteHooks[routeID];\n\n    if (!hasAnyProperties(RouteHooks)) {\n      // teardown transition & beforeunload hooks\n      if (unlistenBefore) {\n        unlistenBefore();\n        unlistenBefore = null;\n      }\n\n      if (unlistenBeforeUnload) {\n        unlistenBeforeUnload();\n        unlistenBeforeUnload = null;\n      }\n    }\n  }\n\n  /**\n   * Registers the given hook function to run before leaving the given route.\n   *\n   * During a normal transition, the hook function receives the next location\n   * as its only argument and can return either a prompt message (string) to show the user,\n   * to make sure they want to leave the page; or `false`, to prevent the transition.\n   * Any other return value will have no effect.\n   *\n   * During the beforeunload event (in browsers) the hook receives no arguments.\n   * In this case it must return a prompt message to prevent the transition.\n   *\n   * Returns a function that may be used to unbind the listener.\n   */\n  function listenBeforeLeavingRoute(route, hook) {\n    var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);\n    var routeID = getRouteID(route, true);\n\n    RouteHooks[routeID] = hook;\n\n    if (thereWereNoRouteHooks) {\n      // setup transition & beforeunload hooks\n      unlistenBefore = history.listenBefore(transitionHook);\n\n      if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);\n    }\n\n    return function () {\n      removeListenBeforeHooksForRoute(route);\n    };\n  }\n\n  /**\n   * This is the API for stateful environments. As the location\n   * changes, we update state and call the listener. We can also\n   * gracefully handle errors and redirects.\n   */\n  function listen(listener) {\n    function historyListener(location) {\n      if (state.location === location) {\n        listener(null, state);\n      } else {\n        match(location, function (error, redirectLocation, nextState) {\n          if (error) {\n            listener(error);\n          } else if (redirectLocation) {\n            history.replace(redirectLocation);\n          } else if (nextState) {\n            listener(null, nextState);\n          } else {\n            process.env.NODE_ENV !== 'production' ? warning(false, 'Location \"%s\" did not match any routes', location.pathname + location.search + location.hash) : void 0;\n          }\n        });\n      }\n    }\n\n    // TODO: Only use a single history listener. Otherwise we'll end up with\n    // multiple concurrent calls to match.\n\n    // Set up the history listener first in case the initial match redirects.\n    var unsubscribe = history.listen(historyListener);\n\n    if (state.location) {\n      // Picking up on a matchContext.\n      listener(null, state);\n    } else {\n      historyListener(history.getCurrentLocation());\n    }\n\n    return unsubscribe;\n  }\n\n  return {\n    isActive: isActive,\n    match: match,\n    listenBeforeLeavingRoute: listenBeforeLeavingRoute,\n    listen: listen\n  };\n}","import { func, object, arrayOf, oneOfType, element, shape, elementType } from 'prop-types';\n\nexport function falsy(props, propName, componentName) {\n  if (props[propName]) return new Error('<' + componentName + '> should not have a \"' + propName + '\" prop');\n}\n\nexport var history = shape({\n  listen: func.isRequired,\n  push: func.isRequired,\n  replace: func.isRequired,\n  go: func.isRequired,\n  goBack: func.isRequired,\n  goForward: func.isRequired\n});\n\nexport var component = elementType;\nexport var components = oneOfType([component, object]);\nexport var route = oneOfType([object, element]);\nexport var routes = oneOfType([route, arrayOf(route)]);","import { getParamNames } from './PatternUtils';\n\n/**\n * Extracts an object of params the given route cares about from\n * the given params object.\n */\nfunction getRouteParams(route, params) {\n  var routeParams = {};\n\n  if (!route.path) return routeParams;\n\n  getParamNames(route.path).forEach(function (p) {\n    if (Object.prototype.hasOwnProperty.call(params, p)) {\n      routeParams[p] = params[p];\n    }\n  });\n\n  return routeParams;\n}\n\nexport default getRouteParams;","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Works around issues with context updates failing to propagate.\n// Caveat: the context value is expected to never change its identity.\n// https://github.com/facebook/react/issues/2517\n// https://github.com/reactjs/react-router/issues/470\n\nvar contextProviderShape = PropTypes.shape({\n  subscribe: PropTypes.func.isRequired,\n  eventIndex: PropTypes.number.isRequired\n});\n\nfunction makeContextName(name) {\n  return '@@contextSubscriber/' + name;\n}\n\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== 'undefined';\n\nexport function ContextProvider(name) {\n  var _childContextTypes, _config;\n\n  var contextName = makeContextName(name);\n  var listenersKey = contextName + '/listeners';\n  var eventIndexKey = contextName + '/eventIndex';\n  var subscribeKey = contextName + '/subscribe';\n\n  var config = (_config = {\n    childContextTypes: (_childContextTypes = {}, _childContextTypes[contextName] = contextProviderShape.isRequired, _childContextTypes),\n\n    getChildContext: function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextName] = {\n        eventIndex: this[eventIndexKey],\n        subscribe: this[subscribeKey]\n      }, _ref;\n    },\n\n\n    // this method will be updated to UNSAFE_componentWillMount below for React versions >= 16.3\n    componentWillMount: function componentWillMount() {\n      this[listenersKey] = [];\n      this[eventIndexKey] = 0;\n    },\n\n\n    // this method will be updated to UNSAFE_componentWillReceiveProps below for React versions >= 16.3\n    componentWillReceiveProps: function componentWillReceiveProps() {\n      this[eventIndexKey]++;\n    },\n    componentDidUpdate: function componentDidUpdate() {\n      var _this = this;\n\n      this[listenersKey].forEach(function (listener) {\n        return listener(_this[eventIndexKey]);\n      });\n    }\n  }, _config[subscribeKey] = function (listener) {\n    var _this2 = this;\n\n    // No need to immediately call listener here.\n    this[listenersKey].push(listener);\n\n    return function () {\n      _this2[listenersKey] = _this2[listenersKey].filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }, _config);\n\n  if (prefixUnsafeLifecycleMethods) {\n    config.UNSAFE_componentWillMount = config.componentWillMount;\n    config.UNSAFE_componentWillReceiveProps = config.componentWillReceiveProps;\n    delete config.componentWillMount;\n    delete config.componentWillReceiveProps;\n  }\n  return config;\n}\n\nexport function ContextSubscriber(name) {\n  var _contextTypes, _config2;\n\n  var contextName = makeContextName(name);\n  var lastRenderedEventIndexKey = contextName + '/lastRenderedEventIndex';\n  var handleContextUpdateKey = contextName + '/handleContextUpdate';\n  var unsubscribeKey = contextName + '/unsubscribe';\n\n  var config = (_config2 = {\n    contextTypes: (_contextTypes = {}, _contextTypes[contextName] = contextProviderShape, _contextTypes),\n\n    getInitialState: function getInitialState() {\n      var _ref2;\n\n      if (!this.context[contextName]) {\n        return {};\n      }\n\n      return _ref2 = {}, _ref2[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _ref2;\n    },\n    componentDidMount: function componentDidMount() {\n      if (!this.context[contextName]) {\n        return;\n      }\n\n      this[unsubscribeKey] = this.context[contextName].subscribe(this[handleContextUpdateKey]);\n    },\n\n\n    // this method will be updated to UNSAFE_componentWillReceiveProps below for React versions >= 16.3\n    componentWillReceiveProps: function componentWillReceiveProps() {\n      var _setState;\n\n      if (!this.context[contextName]) {\n        return;\n      }\n\n      this.setState((_setState = {}, _setState[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _setState));\n    },\n    componentWillUnmount: function componentWillUnmount() {\n      if (!this[unsubscribeKey]) {\n        return;\n      }\n\n      this[unsubscribeKey]();\n      this[unsubscribeKey] = null;\n    }\n  }, _config2[handleContextUpdateKey] = function (eventIndex) {\n    if (eventIndex !== this.state[lastRenderedEventIndexKey]) {\n      var _setState2;\n\n      this.setState((_setState2 = {}, _setState2[lastRenderedEventIndexKey] = eventIndex, _setState2));\n    }\n  }, _config2);\n\n  if (prefixUnsafeLifecycleMethods) {\n    config.UNSAFE_componentWillReceiveProps = config.componentWillReceiveProps;\n    delete config.componentWillReceiveProps;\n  }\n  return config;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport invariant from 'invariant';\nimport React from 'react';\nimport { isValidElementType } from 'react-is';\nimport createReactClass from 'create-react-class';\nimport { array, func, object } from 'prop-types';\n\nimport getRouteParams from './getRouteParams';\nimport { ContextProvider } from './ContextUtils';\nimport { isReactChildren } from './RouteUtils';\n\n/**\n * A <RouterContext> renders the component tree for a given router state\n * and sets the history object and the current location in context.\n */\nvar RouterContext = createReactClass({\n  displayName: 'RouterContext',\n\n  mixins: [ContextProvider('router')],\n\n  propTypes: {\n    router: object.isRequired,\n    location: object.isRequired,\n    routes: array.isRequired,\n    params: object.isRequired,\n    components: array.isRequired,\n    createElement: func.isRequired\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      createElement: React.createElement\n    };\n  },\n\n\n  childContextTypes: {\n    router: object.isRequired\n  },\n\n  getChildContext: function getChildContext() {\n    return {\n      router: this.props.router\n    };\n  },\n  createElement: function createElement(component, props) {\n    return component == null ? null : this.props.createElement(component, props);\n  },\n  render: function render() {\n    var _this = this;\n\n    var _props = this.props,\n        location = _props.location,\n        routes = _props.routes,\n        params = _props.params,\n        components = _props.components,\n        router = _props.router;\n\n    var element = null;\n\n    if (components) {\n      element = components.reduceRight(function (element, components, index) {\n        if (components == null) return element; // Don't create new children; use the grandchildren.\n\n        var route = routes[index];\n        var routeParams = getRouteParams(route, params);\n        var props = {\n          location: location,\n          params: params,\n          route: route,\n          router: router,\n          routeParams: routeParams,\n          routes: routes\n        };\n\n        if (isReactChildren(element)) {\n          props.children = element;\n        } else if (element) {\n          for (var prop in element) {\n            if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];\n          }\n        }\n\n        // Handle components is object for { [name]: component } but not valid element\n        // type of react, such as React.memo, React.lazy and so on.\n        if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object' && !isValidElementType(components)) {\n          var elements = {};\n\n          for (var key in components) {\n            if (Object.prototype.hasOwnProperty.call(components, key)) {\n              // Pass through the key as a prop to createElement to allow\n              // custom createElement functions to know which named component\n              // they're rendering, for e.g. matching up to fetched data.\n              elements[key] = _this.createElement(components[key], _extends({\n                key: key }, props));\n            }\n          }\n\n          return elements;\n        }\n\n        return _this.createElement(components, props);\n      }, element);\n    }\n\n    !(element === null || element === false || React.isValidElement(element)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The root route must render a single element') : invariant(false) : void 0;\n\n    return element;\n  }\n});\n\nexport default RouterContext;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexport function createRouterObject(history, transitionManager, state) {\n  var router = _extends({}, history, {\n    setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,\n    isActive: transitionManager.isActive\n  });\n\n  return assignRouterState(router, state);\n}\n\nexport function assignRouterState(router, _ref) {\n  var location = _ref.location,\n      params = _ref.params,\n      routes = _ref.routes;\n\n  router.location = location;\n  router.params = params;\n  router.routes = routes;\n\n  return router;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport invariant from 'invariant';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport { func, object } from 'prop-types';\n\nimport _createTransitionManager from './createTransitionManager';\nimport { routes } from './InternalPropTypes';\nimport RouterContext from './RouterContext';\nimport { createRoutes } from './RouteUtils';\nimport { createRouterObject as _createRouterObject, assignRouterState } from './RouterUtils';\nimport warning from './routerWarning';\n\nvar propTypes = {\n  history: object,\n  children: routes,\n  routes: routes, // alias for children\n  render: func,\n  createElement: func,\n  onError: func,\n  onUpdate: func,\n\n  // PRIVATE: For client-side rehydration of server match.\n  matchContext: object\n};\n\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== 'undefined';\n\n/**\n * A <Router> is a high-level API for automatically setting up\n * a router that renders a <RouterContext> with all the props\n * it needs each time the URL changes.\n */\nvar Router = createReactClass({\n  displayName: 'Router',\n\n  propTypes: propTypes,\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      render: function render(props) {\n        return React.createElement(RouterContext, props);\n      }\n    };\n  },\n  getInitialState: function getInitialState() {\n    return {\n      location: null,\n      routes: null,\n      params: null,\n      components: null\n    };\n  },\n  handleError: function handleError(error) {\n    if (this.props.onError) {\n      this.props.onError.call(this, error);\n    } else {\n      // Throw errors by default so we don't silently swallow them!\n      throw error; // This error probably occurred in getChildRoutes or getComponents.\n    }\n  },\n  createRouterObject: function createRouterObject(state) {\n    var matchContext = this.props.matchContext;\n\n    if (matchContext) {\n      return matchContext.router;\n    }\n\n    var history = this.props.history;\n\n    return _createRouterObject(history, this.transitionManager, state);\n  },\n  createTransitionManager: function createTransitionManager() {\n    var matchContext = this.props.matchContext;\n\n    if (matchContext) {\n      return matchContext.transitionManager;\n    }\n\n    var history = this.props.history;\n    var _props = this.props,\n        routes = _props.routes,\n        children = _props.children;\n\n\n    !history.getCurrentLocation ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You have provided a history object created with history v4.x or v2.x ' + 'and earlier. This version of React Router is only compatible with v3 ' + 'history objects. Please change to history v3.x.') : invariant(false) : void 0;\n\n    return _createTransitionManager(history, createRoutes(routes || children));\n  },\n\n\n  // this method will be updated to UNSAFE_componentWillMount below for React versions >= 16.3\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    this.transitionManager = this.createTransitionManager();\n    this.router = this.createRouterObject(this.state);\n\n    this._unlisten = this.transitionManager.listen(function (error, state) {\n      if (error) {\n        _this.handleError(error);\n      } else {\n        // Keep the identity of this.router because of a caveat in ContextUtils:\n        // they only work if the object identity is preserved.\n        assignRouterState(_this.router, state);\n        _this.setState(state, _this.props.onUpdate);\n      }\n    });\n  },\n\n\n  // this method will be updated to UNSAFE_componentWillReceiveProps below for React versions >= 16.3\n  /* istanbul ignore next: sanity check */\n  componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n    process.env.NODE_ENV !== 'production' ? warning(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;\n\n    process.env.NODE_ENV !== 'production' ? warning((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    if (this._unlisten) this._unlisten();\n  },\n  render: function render() {\n    var _state = this.state,\n        location = _state.location,\n        routes = _state.routes,\n        params = _state.params,\n        components = _state.components;\n\n    var _props2 = this.props,\n        createElement = _props2.createElement,\n        render = _props2.render,\n        props = _objectWithoutProperties(_props2, ['createElement', 'render']);\n\n    if (location == null) return null; // Async match\n\n    // Only forward non-Router-specific props to routing context, as those are\n    // the only ones that might be custom routing context props.\n    Object.keys(propTypes).forEach(function (propType) {\n      return delete props[propType];\n    });\n\n    return render(_extends({}, props, {\n      router: this.router,\n      location: location,\n      routes: routes,\n      params: params,\n      components: components,\n      createElement: createElement\n    }));\n  }\n});\n\nif (prefixUnsafeLifecycleMethods) {\n  Router.prototype.UNSAFE_componentWillReceiveProps = Router.prototype.componentWillReceiveProps;\n  Router.prototype.UNSAFE_componentWillMount = Router.prototype.componentWillMount;\n  delete Router.prototype.componentWillReceiveProps;\n  delete Router.prototype.componentWillMount;\n}\n\nexport default Router;","import { func, object, shape, string } from 'prop-types';\n\nexport var routerShape = shape({\n  push: func.isRequired,\n  replace: func.isRequired,\n  go: func.isRequired,\n  goBack: func.isRequired,\n  goForward: func.isRequired,\n  setRouteLeaveHook: func.isRequired,\n  isActive: func.isRequired\n});\n\nexport var locationShape = shape({\n  pathname: string.isRequired,\n  search: string.isRequired,\n  state: object,\n  action: string.isRequired,\n  key: string\n});","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport { bool, object, string, func, oneOfType, shape, elementType } from 'prop-types';\nimport invariant from 'invariant';\nimport { routerShape } from './PropTypes';\nimport { ContextSubscriber } from './ContextUtils';\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n// TODO: De-duplicate against hasAnyProperties in createTransitionManager.\nfunction isEmptyObject(object) {\n  for (var p in object) {\n    if (Object.prototype.hasOwnProperty.call(object, p)) return false;\n  }return true;\n}\n\nfunction resolveToLocation(to, router) {\n  return typeof to === 'function' ? to(router.location) : to;\n}\n\n/**\n * A <Link> is used to create an <a> element that links to a route.\n * When that route is active, the link gets the value of its\n * activeClassName prop.\n *\n * For example, assuming you have the following route:\n *\n *   <Route path=\"/posts/:postID\" component={Post} />\n *\n * You could use the following component to link to that route:\n *\n *   <Link to={`/posts/${post.id}`} />\n */\nvar Link = createReactClass({\n  displayName: 'Link',\n\n  mixins: [ContextSubscriber('router')],\n\n  contextTypes: {\n    router: routerShape\n  },\n\n  propTypes: {\n    to: oneOfType([string, object, func]),\n    activeStyle: object,\n    activeClassName: string,\n    onlyActiveOnIndex: bool.isRequired,\n    onClick: func,\n    target: string,\n    innerRef: oneOfType([string, func, shape({ current: elementType })])\n  },\n\n  getDefaultProps: function getDefaultProps() {\n    return {\n      onlyActiveOnIndex: false,\n      style: {}\n    };\n  },\n  handleClick: function handleClick(event) {\n    if (this.props.onClick) this.props.onClick(event);\n\n    if (event.defaultPrevented) return;\n\n    var router = this.context.router;\n\n    !router ? process.env.NODE_ENV !== 'production' ? invariant(false, '<Link>s rendered outside of a router context cannot navigate.') : invariant(false) : void 0;\n\n    if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;\n\n    // If target prop is set (e.g. to \"_blank\"), let browser handle link.\n    /* istanbul ignore if: untestable with Karma */\n    if (this.props.target) return;\n\n    event.preventDefault();\n\n    router.push(resolveToLocation(this.props.to, router));\n  },\n  render: function render() {\n    var _props = this.props,\n        to = _props.to,\n        activeClassName = _props.activeClassName,\n        activeStyle = _props.activeStyle,\n        onlyActiveOnIndex = _props.onlyActiveOnIndex,\n        innerRef = _props.innerRef,\n        props = _objectWithoutProperties(_props, ['to', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex', 'innerRef']);\n\n    // Ignore if rendered outside the context of router to simplify unit testing.\n\n\n    var router = this.context.router;\n\n\n    if (router) {\n      // If user does not specify a `to` prop, return an empty anchor tag.\n      if (!to) {\n        return React.createElement('a', _extends({}, props, { ref: innerRef }));\n      }\n\n      var toLocation = resolveToLocation(to, router);\n      props.href = router.createHref(toLocation);\n\n      if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {\n        if (router.isActive(toLocation, onlyActiveOnIndex)) {\n          if (activeClassName) {\n            if (props.className) {\n              props.className += ' ' + activeClassName;\n            } else {\n              props.className = activeClassName;\n            }\n          }\n\n          if (activeStyle) props.style = _extends({}, props.style, activeStyle);\n        }\n      }\n    }\n\n    return React.createElement('a', _extends({}, props, { onClick: this.handleClick, ref: innerRef }));\n  }\n});\n\nexport default Link;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Link from './Link';\n\n/**\n * An <IndexLink> is used to link to an <IndexRoute>.\n */\nvar IndexLink = createReactClass({\n  displayName: 'IndexLink',\n\n  render: function render() {\n    return React.createElement(Link, _extends({}, this.props, { onlyActiveOnIndex: true }));\n  }\n});\n\nexport default IndexLink;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport invariant from 'invariant';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { ContextSubscriber } from './ContextUtils';\nimport { routerShape } from './PropTypes';\n\nfunction getDisplayName(WrappedComponent) {\n  return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nexport default function withRouter(WrappedComponent, options) {\n  var withRef = options && options.withRef;\n\n  var WithRouter = createReactClass({\n    displayName: 'WithRouter',\n\n    mixins: [ContextSubscriber('router')],\n\n    contextTypes: { router: routerShape },\n    propTypes: { router: routerShape },\n\n    getWrappedInstance: function getWrappedInstance() {\n      !withRef ? process.env.NODE_ENV !== 'production' ? invariant(false, 'To access the wrapped instance, you need to specify ' + '`{ withRef: true }` as the second argument of the withRouter() call.') : invariant(false) : void 0;\n\n      return this.wrappedInstance;\n    },\n    render: function render() {\n      var _this = this;\n\n      var router = this.props.router || this.context.router;\n      if (!router) {\n        return React.createElement(WrappedComponent, this.props);\n      }\n\n      var params = router.params,\n          location = router.location,\n          routes = router.routes;\n\n      var props = _extends({}, this.props, { router: router, params: params, location: location, routes: routes });\n\n      if (withRef) {\n        props.ref = function (c) {\n          _this.wrappedInstance = c;\n        };\n      }\n\n      return React.createElement(WrappedComponent, props);\n    }\n  });\n\n  WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';\n  WithRouter.WrappedComponent = WrappedComponent;\n\n  return hoistStatics(WithRouter, WrappedComponent);\n}","import createReactClass from 'create-react-class';\nimport { string, object } from 'prop-types';\nimport invariant from 'invariant';\nimport { createRouteFromReactElement as _createRouteFromReactElement } from './RouteUtils';\nimport { formatPattern } from './PatternUtils';\nimport { falsy } from './InternalPropTypes';\n\n/**\n * A <Redirect> is used to declare another URL path a client should\n * be sent to when they request a given URL.\n *\n * Redirects are placed alongside routes in the route configuration\n * and are traversed in the same manner.\n */\n/* eslint-disable react/require-render-return */\nvar Redirect = createReactClass({\n  displayName: 'Redirect',\n\n  statics: {\n    createRouteFromReactElement: function createRouteFromReactElement(element) {\n      var route = _createRouteFromReactElement(element);\n\n      if (route.from) route.path = route.from;\n\n      route.onEnter = function (nextState, replace) {\n        var location = nextState.location,\n            params = nextState.params;\n\n\n        var pathname = void 0;\n        if (route.to.charAt(0) === '/') {\n          pathname = formatPattern(route.to, params);\n        } else if (!route.to) {\n          pathname = location.pathname;\n        } else {\n          var routeIndex = nextState.routes.indexOf(route);\n          var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);\n          var pattern = parentPattern.replace(/\\/*$/, '/') + route.to;\n          pathname = formatPattern(pattern, params);\n        }\n\n        replace({\n          pathname: pathname,\n          query: route.query || location.query,\n          state: route.state || location.state\n        });\n      };\n\n      return route;\n    },\n    getRoutePattern: function getRoutePattern(routes, routeIndex) {\n      var parentPattern = '';\n\n      for (var i = routeIndex; i >= 0; i--) {\n        var route = routes[i];\n        var pattern = route.path || '';\n\n        parentPattern = pattern.replace(/\\/*$/, '/') + parentPattern;\n\n        if (pattern.indexOf('/') === 0) break;\n      }\n\n      return '/' + parentPattern;\n    }\n  },\n\n  propTypes: {\n    path: string,\n    from: string, // Alias for path\n    to: string.isRequired,\n    query: object,\n    state: object,\n    onEnter: falsy,\n    children: falsy\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<Redirect> elements are for router configuration only and should not be rendered') : invariant(false) : void 0;\n  }\n});\n\nexport default Redirect;","import createReactClass from 'create-react-class';\nimport { func } from 'prop-types';\nimport warning from './routerWarning';\nimport invariant from 'invariant';\nimport { createRouteFromReactElement as _createRouteFromReactElement } from './RouteUtils';\nimport { component, components, falsy } from './InternalPropTypes';\n\n/**\n * An <IndexRoute> is used to specify its parent's <Route indexRoute> in\n * a JSX route config.\n */\n/* eslint-disable react/require-render-return */\nvar IndexRoute = createReactClass({\n  displayName: 'IndexRoute',\n\n  statics: {\n    createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n      /* istanbul ignore else: sanity check */\n      if (parentRoute) {\n        parentRoute.indexRoute = _createRouteFromReactElement(element);\n      } else {\n        process.env.NODE_ENV !== 'production' ? warning(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;\n      }\n    }\n  },\n\n  propTypes: {\n    path: falsy,\n    component: component,\n    components: components,\n    getComponent: func,\n    getComponents: func\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : invariant(false) : void 0;\n  }\n});\n\nexport default IndexRoute;","import createReactClass from 'create-react-class';\nimport { string, object } from 'prop-types';\nimport warning from './routerWarning';\nimport invariant from 'invariant';\nimport Redirect from './Redirect';\nimport { falsy } from './InternalPropTypes';\n\n/**\n * An <IndexRedirect> is used to redirect from an indexRoute.\n */\n/* eslint-disable react/require-render-return */\nvar IndexRedirect = createReactClass({\n  displayName: 'IndexRedirect',\n\n  statics: {\n    createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n      /* istanbul ignore else: sanity check */\n      if (parentRoute) {\n        parentRoute.indexRoute = Redirect.createRouteFromReactElement(element);\n      } else {\n        process.env.NODE_ENV !== 'production' ? warning(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;\n      }\n    }\n  },\n\n  propTypes: {\n    to: string.isRequired,\n    query: object,\n    state: object,\n    onEnter: falsy,\n    children: falsy\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : invariant(false) : void 0;\n  }\n});\n\nexport default IndexRedirect;","import createReactClass from 'create-react-class';\nimport { string, func } from 'prop-types';\nimport invariant from 'invariant';\nimport { createRouteFromReactElement } from './RouteUtils';\nimport { component, components } from './InternalPropTypes';\n\n/**\n * A <Route> is used to declare which components are rendered to the\n * page when the URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is\n * requested, the tree is searched depth-first to find a route whose\n * path matches the URL.  When one is found, all routes in the tree\n * that lead to it are considered \"active\" and their components are\n * rendered into the DOM, nested in the same order as in the tree.\n */\n/* eslint-disable react/require-render-return */\nvar Route = createReactClass({\n  displayName: 'Route',\n\n  statics: {\n    createRouteFromReactElement: createRouteFromReactElement\n  },\n\n  propTypes: {\n    path: string,\n    component: component,\n    components: components,\n    getComponent: func,\n    getComponents: func\n  },\n\n  /* istanbul ignore next: sanity check */\n  render: function render() {\n    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<Route> elements are for router configuration only and should not be rendered') : invariant(false) : void 0;\n  }\n});\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport { REPLACE } from 'history/lib/Actions';\nimport invariant from 'invariant';\n\nimport createMemoryHistory from './createMemoryHistory';\nimport createTransitionManager from './createTransitionManager';\nimport { createRoutes } from './RouteUtils';\nimport { createRouterObject } from './RouterUtils';\n\n/**\n * A high-level API to be used for server-side rendering.\n *\n * This function matches a location to a set of routes and calls\n * callback(error, redirectLocation, renderProps) when finished.\n *\n * Note: You probably don't want to use this in a browser unless you're using\n * server-side rendering with async routes.\n */\nfunction match(_ref, callback) {\n  var history = _ref.history,\n      routes = _ref.routes,\n      location = _ref.location,\n      options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);\n\n  !(history || location) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'match needs a history or a location') : invariant(false) : void 0;\n\n  history = history ? history : createMemoryHistory(options);\n  var transitionManager = createTransitionManager(history, createRoutes(routes));\n\n  if (location) {\n    // Allow match({ location: '/the/path', ... })\n    location = history.createLocation(location);\n  } else {\n    location = history.getCurrentLocation();\n  }\n\n  transitionManager.match(location, function (error, redirectLocation, nextState) {\n    var renderProps = void 0;\n\n    if (nextState) {\n      var router = createRouterObject(history, transitionManager, nextState);\n      renderProps = _extends({}, nextState, {\n        router: router,\n        matchContext: { transitionManager: transitionManager, router: router }\n      });\n    }\n\n    callback(error, redirectLocation && history.createLocation(redirectLocation, REPLACE), renderProps);\n  });\n}\n\nexport default match;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React, { createElement } from 'react';\nimport RouterContext from './RouterContext';\nimport warning from './routerWarning';\n\nexport default (function () {\n  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    middlewares.forEach(function (middleware, index) {\n      process.env.NODE_ENV !== 'production' ? warning(middleware.renderRouterContext || middleware.renderRouteComponent, 'The middleware specified at index ' + index + ' does not appear to be ' + 'a valid React Router middleware.') : void 0;\n    });\n  }\n\n  var withContext = middlewares.map(function (middleware) {\n    return middleware.renderRouterContext;\n  }).filter(Boolean);\n  var withComponent = middlewares.map(function (middleware) {\n    return middleware.renderRouteComponent;\n  }).filter(Boolean);\n\n  var makeCreateElement = function makeCreateElement() {\n    var baseCreateElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : createElement;\n    return function (Component, props) {\n      return withComponent.reduceRight(function (previous, renderRouteComponent) {\n        return renderRouteComponent(previous, props);\n      }, baseCreateElement(Component, props));\n    };\n  };\n\n  return function (renderProps) {\n    return withContext.reduceRight(function (previous, renderRouterContext) {\n      return renderRouterContext(previous, renderProps);\n    }, React.createElement(RouterContext, _extends({}, renderProps, {\n      createElement: makeCreateElement(renderProps.createElement)\n    })));\n  };\n});","import useRouterHistory from './useRouterHistory';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport default function createRouterHistory(createHistory) {\n  var history = void 0;\n  if (canUseDOM) history = useRouterHistory(createHistory)();\n  return history;\n}","import useQueries from 'history/lib/useQueries';\nimport useBasename from 'history/lib/useBasename';\n\nexport default function useRouterHistory(createHistory) {\n  return function (options) {\n    var history = useQueries(useBasename(createHistory))(options);\n    return history;\n  };\n}","import createBrowserHistory from 'history/lib/createBrowserHistory';\nimport createRouterHistory from './createRouterHistory';\nexport default createRouterHistory(createBrowserHistory);","import createHashHistory from 'history/lib/createHashHistory';\nimport createRouterHistory from './createRouterHistory';\nexport default createRouterHistory(createHashHistory);","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n  trySubscribe: PropTypes.func.isRequired,\n  tryUnsubscribe: PropTypes.func.isRequired,\n  notifyNestedSubs: PropTypes.func.isRequired,\n  isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n  subscribe: PropTypes.func.isRequired,\n  dispatch: PropTypes.func.isRequired,\n  getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n  if (didWarnAboutReceivingStore) {\n    return;\n  }\n\n  didWarnAboutReceivingStore = true;\n  warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n  var _Provider$childContex;\n\n  if (storeKey === void 0) {\n    storeKey = 'store';\n  }\n\n  var subscriptionKey = storeKey + \"Subscription\";\n\n  var Provider =\n  /*#__PURE__*/\n  function (_Component) {\n    _inheritsLoose(Provider, _Component);\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n    };\n\n    function Provider(props, context) {\n      var _this;\n\n      _this = _Component.call(this, props, context) || this;\n      _this[storeKey] = props.store;\n      return _this;\n    }\n\n    _proto.render = function render() {\n      return Children.only(this.props.children);\n    };\n\n    return Provider;\n  }(Component);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // Use UNSAFE_ event name where supported\n    var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillReceiveProps' : 'componentWillReceiveProps';\n\n    Provider.prototype[eventName] = function (nextProps) {\n      if (this[storeKey] !== nextProps.store) {\n        warnAboutReceivingStore();\n      }\n    };\n  }\n\n  Provider.propTypes = {\n    store: storeShape.isRequired,\n    children: PropTypes.element.isRequired\n  };\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n  return Provider;\n}\nexport default createProvider();","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n  notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n  // the current/next pattern is copied from redux's createStore code.\n  // TODO: refactor+expose that code to be reusable here?\n  var current = [];\n  var next = [];\n  return {\n    clear: function clear() {\n      next = CLEARED;\n      current = CLEARED;\n    },\n    notify: function notify() {\n      var listeners = current = next;\n\n      for (var i = 0; i < listeners.length; i++) {\n        listeners[i]();\n      }\n    },\n    get: function get() {\n      return next;\n    },\n    subscribe: function subscribe(listener) {\n      var isSubscribed = true;\n      if (next === current) next = current.slice();\n      next.push(listener);\n      return function unsubscribe() {\n        if (!isSubscribed || current === CLEARED) return;\n        isSubscribed = false;\n        if (next === current) next = current.slice();\n        next.splice(next.indexOf(listener), 1);\n      };\n    }\n  };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n  function Subscription(store, parentSub, onStateChange) {\n    this.store = store;\n    this.parentSub = parentSub;\n    this.onStateChange = onStateChange;\n    this.unsubscribe = null;\n    this.listeners = nullListeners;\n  }\n\n  var _proto = Subscription.prototype;\n\n  _proto.addNestedSub = function addNestedSub(listener) {\n    this.trySubscribe();\n    return this.listeners.subscribe(listener);\n  };\n\n  _proto.notifyNestedSubs = function notifyNestedSubs() {\n    this.listeners.notify();\n  };\n\n  _proto.isSubscribed = function isSubscribed() {\n    return Boolean(this.unsubscribe);\n  };\n\n  _proto.trySubscribe = function trySubscribe() {\n    if (!this.unsubscribe) {\n      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n      this.listeners = createListenerCollection();\n    }\n  };\n\n  _proto.tryUnsubscribe = function tryUnsubscribe() {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = null;\n      this.listeners.clear();\n      this.listeners = nullListeners;\n    }\n  };\n\n  return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n  // wrap the selector in an object that tracks its results between runs.\n  var selector = {\n    run: function runComponentSelector(props) {\n      try {\n        var nextProps = sourceSelector(store.getState(), props);\n\n        if (nextProps !== selector.props || selector.error) {\n          selector.shouldComponentUpdate = true;\n          selector.props = nextProps;\n          selector.error = null;\n        }\n      } catch (error) {\n        selector.shouldComponentUpdate = true;\n        selector.error = error;\n      }\n    }\n  };\n  return selector;\n}\n\nexport default function connectAdvanced(\n/*\n  selectorFactory is a func that is responsible for returning the selector function used to\n  compute new props from state, props, and dispatch. For example:\n     export default connectAdvanced((dispatch, options) => (state, props) => ({\n      thing: state.things[props.thingId],\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n    }))(YourComponent)\n   Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n   Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\n  selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n  var _contextTypes, _childContextTypes;\n\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n  var subscriptionKey = storeKey + 'Subscription';\n  var version = hotReloadingVersion++;\n  var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n  var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n  return function wrapWithConnect(WrappedComponent) {\n    invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      withRef: withRef,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n      /* eslint-disable react/no-deprecated */\n\n    });\n\n    var Connect =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(Connect, _Component);\n\n      function Connect(props, context) {\n        var _this;\n\n        _this = _Component.call(this, props, context) || this;\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n        invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n        _this.initSelector();\n\n        _this.initSubscription();\n\n        return _this;\n      }\n\n      var _proto = Connect.prototype;\n\n      _proto.getChildContext = function getChildContext() {\n        var _ref3;\n\n        // If this component received store from props, its subscription should be transparent\n        // to any descendants receiving store+subscription from context; it passes along\n        // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n        // Connect to control ordering of notifications to flow top-down.\n        var subscription = this.propsMode ? null : this.subscription;\n        return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n      };\n\n      _proto.componentDidMount = function componentDidMount() {\n        if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n        // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n        // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n        // To handle the case where a child component may have triggered a state change by\n        // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n        // re-render.\n\n        this.subscription.trySubscribe();\n        this.selector.run(this.props);\n        if (this.selector.shouldComponentUpdate) this.forceUpdate();\n      }; // Note: this is renamed below to the UNSAFE_ version in React >=16.3.0\n\n\n      _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n        this.selector.run(nextProps);\n      };\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n        return this.selector.shouldComponentUpdate;\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        if (this.subscription) this.subscription.tryUnsubscribe();\n        this.subscription = null;\n        this.notifyNestedSubs = noop;\n        this.store = null;\n        this.selector.run = noop;\n        this.selector.shouldComponentUpdate = false;\n      };\n\n      _proto.getWrappedInstance = function getWrappedInstance() {\n        invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n        return this.wrappedInstance;\n      };\n\n      _proto.setWrappedInstance = function setWrappedInstance(ref) {\n        this.wrappedInstance = ref;\n      };\n\n      _proto.initSelector = function initSelector() {\n        var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n        this.selector = makeSelectorStateful(sourceSelector, this.store);\n        this.selector.run(this.props);\n      };\n\n      _proto.initSubscription = function initSubscription() {\n        if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n        this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `this.subscription` will then be null. An\n        // extra null check every change can be avoided by copying the method onto `this` and then\n        // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n        // listeners logic is changed to not call listeners that have been unsubscribed in the\n        // middle of the notification loop.\n\n        this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n      };\n\n      _proto.onStateChange = function onStateChange() {\n        this.selector.run(this.props);\n\n        if (!this.selector.shouldComponentUpdate) {\n          this.notifyNestedSubs();\n        } else {\n          this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n          this.setState(dummyState);\n        }\n      };\n\n      _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n        // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n        // needs to notify nested subs. Once called, it unimplements itself until further state\n        // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n        // a boolean check every time avoids an extra method call most of the time, resulting\n        // in some perf boost.\n        this.componentDidUpdate = undefined;\n        this.notifyNestedSubs();\n      };\n\n      _proto.isSubscribed = function isSubscribed() {\n        return Boolean(this.subscription) && this.subscription.isSubscribed();\n      };\n\n      _proto.addExtraProps = function addExtraProps(props) {\n        if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n        // this is especially important for 'ref' since that's a reference back to the component\n        // instance. a singleton memoized selector would then be holding a reference to the\n        // instance, preventing the instance from being garbage collected, and that would be bad\n\n        var withExtras = _extends({}, props);\n\n        if (withRef) withExtras.ref = this.setWrappedInstance;\n        if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n        if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n        return withExtras;\n      };\n\n      _proto.render = function render() {\n        var selector = this.selector;\n        selector.shouldComponentUpdate = false;\n\n        if (selector.error) {\n          throw selector.error;\n        } else {\n          return createElement(WrappedComponent, this.addExtraProps(selector.props));\n        }\n      };\n\n      return Connect;\n    }(Component);\n\n    if (prefixUnsafeLifecycleMethods) {\n      // Use UNSAFE_ event name where supported\n      Connect.prototype.UNSAFE_componentWillReceiveProps = Connect.prototype.componentWillReceiveProps;\n      delete Connect.prototype.componentWillReceiveProps;\n    }\n    /* eslint-enable react/no-deprecated */\n\n\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = displayName;\n    Connect.childContextTypes = childContextTypes;\n    Connect.contextTypes = contextTypes;\n    Connect.propTypes = contextTypes;\n\n    if (process.env.NODE_ENV !== 'production') {\n      // Use UNSAFE_ event name where supported\n      var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\n      Connect.prototype[eventName] = function componentWillUpdate() {\n        var _this2 = this;\n\n        // We are hot reloading!\n        if (this.version !== version) {\n          this.version = version;\n          this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n          // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n          // listeners, this does mean that the old versions of connected descendants will still be\n          // notified of state changes; however, their onStateChange function is a no-op so this\n          // isn't a huge deal.\n\n          var oldListeners = [];\n\n          if (this.subscription) {\n            oldListeners = this.subscription.listeners.get();\n            this.subscription.tryUnsubscribe();\n          }\n\n          this.initSubscription();\n\n          if (shouldHandleStateChanges) {\n            this.subscription.trySubscribe();\n            oldListeners.forEach(function (listener) {\n              return _this2.subscription.listeners.subscribe(listener);\n            });\n          }\n        }\n      };\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//    \n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//    \n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//    \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n  connect is a facade over connectAdvanced. It turns its args into a compatible\n  selectorFactory, which has the signature:\n\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n  \n  connect passes its args to connectAdvanced as options, which will in turn pass them to\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n  selectorFactory returns a final props selector from its mapStateToProps,\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n  mergePropsFactories, and pure args.\n\n  The resulting final props selector is called by the Connect component instance whenever\n  it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default createConnect();","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n  throw Error(\n    'create-react-class could not find the React object. If you are using script tags, ' +\n      'make sure that React is being loaded before create-react-class.'\n  );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n  React.Component,\n  React.isValidElement,\n  ReactNoopUpdateQueue\n);\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nexport function extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nexport var create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, …): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nexport function bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nexport var lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nexport function stamp(obj) {\r\n\t/*eslint-disable */\r\n\tobj._leaflet_id = obj._leaflet_id || ++lastId;\r\n\treturn obj._leaflet_id;\r\n\t/* eslint-enable */\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nexport function throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nexport function wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t    min = range[0],\r\n\t    d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nexport function falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, digits?: Number): Number\r\n// Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default.\r\nexport function formatNum(num, digits) {\r\n\tvar pow = Math.pow(10, (digits === undefined ? 6 : digits));\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nexport function trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nexport function splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nexport function setOptions(obj, options) {\r\n\tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nexport function getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_-]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values — they will be evaluated passing `data` as an argument.\r\nexport function template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nexport var isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nexport function indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nexport var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t    timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nexport var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nexport var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nexport function requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nexport function cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n","import * as Util from './Util';\r\n\r\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nexport function Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = Util.create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\tUtil.extend(NewClass, props.statics);\r\n\t\tdelete props.statics;\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\tUtil.extend.apply(null, [proto].concat(props.includes));\r\n\t\tdelete props.includes;\r\n\t}\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tprops.options = Util.extend(Util.create(proto.options), props.options);\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\tUtil.extend(proto, props);\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\tUtil.extend(this.prototype, props);\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\tUtil.extend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = Util.isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\r\n","import {Class} from './Class';\r\nimport * as Util from './Util';\r\n\r\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nexport var Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!types) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context) {\r\n\t\tthis._events = this._events || {};\r\n\r\n\t\t/* get/init listeners for type */\r\n\t\tvar typeListeners = this._events[type];\r\n\t\tif (!typeListeners) {\r\n\t\t\ttypeListeners = [];\r\n\t\t\tthis._events[type] = typeListeners;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\t\tvar newListener = {fn: fn, ctx: context},\r\n\t\t    listeners = typeListeners;\r\n\r\n\t\t// check if fn already there\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlisteners.push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t    i,\r\n\t\t    len;\r\n\r\n\t\tif (!this._events) { return; }\r\n\r\n\t\tlisteners = this._events[type];\r\n\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!fn) {\r\n\t\t\t// Set all removed listeners to noop so they are not called if remove happens in fire\r\n\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\tlisteners[i].fn = Util.falseFn;\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tif (listeners) {\r\n\r\n\t\t\t// find fn and remove it\r\n\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\tvar l = listeners[i];\r\n\t\t\t\tif (l.ctx !== context) { continue; }\r\n\t\t\t\tif (l.fn === fn) {\r\n\r\n\t\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\t\tl.fn = Util.falseFn;\r\n\r\n\t\t\t\t\tif (this._firingCount) {\r\n\t\t\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlisteners.splice(i, 1);\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide an data\r\n\t// object — the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = Util.extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\tl.fn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\tlistens: function (type, propagate) {\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) { return true; }\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// @method once(…): this\r\n\t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis.once(type, types[type], fn);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar handler = Util.bind(function () {\r\n\t\t\tthis\r\n\t\t\t    .off(types, fn, context)\r\n\t\t\t    .off(types, handler, context);\r\n\t\t}, this);\r\n\r\n\t\t// add a listener that's executed once and removed after that\r\n\t\treturn this\r\n\t\t    .on(types, fn, context)\r\n\t\t    .on(types, handler, context);\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[Util.stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[Util.stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, Util.extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(…): this\r\n// Alias to [`on(…)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(…): this\r\n// Alias to [`off(…)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(…): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(…): this\r\n// Alias to [`once(…)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(…): this\r\n// Alias to [`fire(…)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(…): Boolean\r\n// Alias to [`listens(…)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nexport var Evented = Class.extend(Events);\r\n","import {isArray, formatNum} from '../core/Util';\r\n\r\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t    y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t       point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t       Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t        formatNum(this.x) + ', ' +\r\n\t\t        formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nexport function toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\r\n","import {Point, toPoint} from './Point';\r\n\r\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\textend: function (point) { // (Point)\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = point.clone();\r\n\t\t\tthis.max = point.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(point.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(point.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(point.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(point.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn new Point(\r\n\t\t        (this.min.x + this.max.x) / 2,\r\n\t\t        (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn new Point(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn new Point(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t       (max.x <= this.max.x) &&\r\n\t\t       (min.y >= this.min.y) &&\r\n\t\t       (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t    yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t    yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t}\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nexport function toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\r\n","import {LatLng, toLatLng} from './LatLng';\r\n\r\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t    widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t        new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t        new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t        (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t        (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t       (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t    lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t    lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t       this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nexport function toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\r\n","import * as Util from '../core/Util';\r\nimport {Earth} from './crs/CRS.Earth';\r\nimport {toLatLngBounds} from './LatLngBounds';\r\n\r\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t        Math.abs(this.lat - obj.lat),\r\n\t\t        Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t        Util.formatNum(this.lat, precision) + ', ' +\r\n\t\t        Util.formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t    lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t        [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t        [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nexport function toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (Util.isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\r\n","\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {LatLng} from '../LatLng';\r\nimport {LatLngBounds} from '../LatLngBounds';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](http://en.wikipedia.org/wiki/Coordinate_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nexport var CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t    scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t    untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t    s = this.scale(zoom),\r\n\t\t    min = this.transformation.transform(b.min, s),\r\n\t\t    max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t    lat = this.wrapLat ? Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t    alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t    newCenter = this.wrapLatLng(center),\r\n\t\t    latShift = center.lat - newCenter.lat,\r\n\t\t    lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t    ne = bounds.getNorthEast(),\r\n\t\t    newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t    newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\r\n","import {CRS} from './CRS';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nexport var Earth = Util.extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see http://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t    lat1 = latlng1.lat * rad,\n\t\t    lat2 = latlng2.lat * rad,\n\t\t    sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t    sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t    a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t    c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nexport var SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    max = this.MAX_LATITUDE,\r\n\t\t    lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t    sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\r\n","import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), //  L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); //  L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nexport function Transformation(a, b, c, d) {\r\n\tif (Util.isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t        (point.x / scale - this._b) / this._a,\r\n\t\t        (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nexport function toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\r\n","import {Earth} from './CRS.Earth';\r\nimport {SphericalMercator} from '../projection/Projection.SphericalMercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nexport var EPSG3857 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nexport var EPSG900913 = Util.extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\r\n","import * as Browser from '../../core/Browser';\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nexport function svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nexport function pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n\n\n\n","import * as Util from './Util';\r\nimport {svgCreate} from '../layer/vector/SVG.Util';\r\n\r\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n *   alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nexport var ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nexport var ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nexport var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nexport var webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// `true` for any browser running on an Android platform.\r\nexport var android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; `true` for browsers running on Android 2 or Android 3.\r\nexport var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; `true` for the Android stock browser (i.e. not Chrome)\r\nexport var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nexport var opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nexport var chrome = !edge && userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nexport var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nexport var safari = !chrome && userAgentContains('safari');\r\n\r\nexport var phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nexport var opera12 = 'OTransition' in style;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nexport var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nexport var ie3d = ie && ('transition' in style);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nexport var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nexport var gecko3d = 'MozPerspective' in style;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nexport var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nexport var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nexport var mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nexport var mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nexport var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nexport var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// This does not necessarily mean that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nexport var touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window ||\r\n\t\t(window.DocumentTouch && document instanceof window.DocumentTouch));\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nexport var mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nexport var mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nexport var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nexport var passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () { // eslint-disable-line getter-return\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n}());\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nexport var canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nexport var svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nexport var vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n","import * as DomEvent from './DomEvent';\nimport * as Util from '../core/Util';\nimport * as Browser from '../core/Browser';\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n\nvar POINTER_DOWN =   Browser.msPointer ? 'MSPointerDown'   : 'pointerdown';\nvar POINTER_MOVE =   Browser.msPointer ? 'MSPointerMove'   : 'pointermove';\nvar POINTER_UP =     Browser.msPointer ? 'MSPointerUp'     : 'pointerup';\nvar POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nexport function addPointerListener(obj, type, handler, id) {\n\tif (type === 'touchstart') {\n\t\t_addPointerStart(obj, handler, id);\n\n\t} else if (type === 'touchmove') {\n\t\t_addPointerMove(obj, handler, id);\n\n\t} else if (type === 'touchend') {\n\t\t_addPointerEnd(obj, handler, id);\n\t}\n\n\treturn this;\n}\n\nexport function removePointerListener(obj, type, id) {\n\tvar handler = obj['_leaflet_' + type + id];\n\n\tif (type === 'touchstart') {\n\t\tobj.removeEventListener(POINTER_DOWN, handler, false);\n\n\t} else if (type === 'touchmove') {\n\t\tobj.removeEventListener(POINTER_MOVE, handler, false);\n\n\t} else if (type === 'touchend') {\n\t\tobj.removeEventListener(POINTER_UP, handler, false);\n\t\tobj.removeEventListener(POINTER_CANCEL, handler, false);\n\t}\n\n\treturn this;\n}\n\nfunction _addPointerStart(obj, handler, id) {\n\tvar onDown = Util.bind(function (e) {\n\t\t// IE10 specific: MsTouch needs preventDefault. See #2000\n\t\tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n\t\t\tDomEvent.preventDefault(e);\n\t\t}\n\n\t\t_handlePointer(e, handler);\n\t});\n\n\tobj['_leaflet_touchstart' + id] = onDown;\n\tobj.addEventListener(POINTER_DOWN, onDown, false);\n\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n}\n\nfunction _handlePointer(e, handler) {\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _addPointerMove(obj, handler, id) {\n\tvar onMove = function (e) {\n\t\t// don't fire touch moves when mouse isn't down\n\t\tif ((e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) && e.buttons === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t_handlePointer(e, handler);\n\t};\n\n\tobj['_leaflet_touchmove' + id] = onMove;\n\tobj.addEventListener(POINTER_MOVE, onMove, false);\n}\n\nfunction _addPointerEnd(obj, handler, id) {\n\tvar onUp = function (e) {\n\t\t_handlePointer(e, handler);\n\t};\n\n\tobj['_leaflet_touchend' + id] = onUp;\n\tobj.addEventListener(POINTER_UP, onUp, false);\n\tobj.addEventListener(POINTER_CANCEL, onUp, false);\n}\n","import * as Browser from '../core/Browser';\r\n\r\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n */\r\n\r\nvar _touchstart = Browser.msPointer ? 'MSPointerDown' : Browser.pointer ? 'pointerdown' : 'touchstart';\r\nvar _touchend = Browser.msPointer ? 'MSPointerUp' : Browser.pointer ? 'pointerup' : 'touchend';\r\nvar _pre = '_leaflet_';\r\n\r\n// inspired by Zepto touch code by Thomas Fuchs\r\nexport function addDoubleTapListener(obj, handler, id) {\r\n\tvar last, touch,\r\n\t    doubleTap = false,\r\n\t    delay = 250;\r\n\r\n\tfunction onTouchStart(e) {\r\n\r\n\t\tif (Browser.pointer) {\r\n\t\t\tif (!e.isPrimary) { return; }\r\n\t\t\tif (e.pointerType === 'mouse') { return; } // mouse fires native dblclick\r\n\t\t} else if (e.touches.length > 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar now = Date.now(),\r\n\t\t    delta = now - (last || now);\r\n\r\n\t\ttouch = e.touches ? e.touches[0] : e;\r\n\t\tdoubleTap = (delta > 0 && delta <= delay);\r\n\t\tlast = now;\r\n\t}\r\n\r\n\tfunction onTouchEnd(e) {\r\n\t\tif (doubleTap && !touch.cancelBubble) {\r\n\t\t\tif (Browser.pointer) {\r\n\t\t\t\tif (e.pointerType === 'mouse') { return; }\r\n\t\t\t\t// work around .type being readonly with MSPointer* events\r\n\t\t\t\tvar newTouch = {},\r\n\t\t\t\t    prop, i;\r\n\r\n\t\t\t\tfor (i in touch) {\r\n\t\t\t\t\tprop = touch[i];\r\n\t\t\t\t\tnewTouch[i] = prop && prop.bind ? prop.bind(touch) : prop;\r\n\t\t\t\t}\r\n\t\t\t\ttouch = newTouch;\r\n\t\t\t}\r\n\t\t\ttouch.type = 'dblclick';\r\n\t\t\ttouch.button = 0;\r\n\t\t\thandler(touch);\r\n\t\t\tlast = null;\r\n\t\t}\r\n\t}\r\n\r\n\tobj[_pre + _touchstart + id] = onTouchStart;\r\n\tobj[_pre + _touchend + id] = onTouchEnd;\r\n\tobj[_pre + 'dblclick' + id] = handler;\r\n\r\n\tobj.addEventListener(_touchstart, onTouchStart, Browser.passiveEvents ? {passive: false} : false);\r\n\tobj.addEventListener(_touchend, onTouchEnd, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n\t// On some platforms (notably, chrome<55 on win10 + touchscreen + mouse),\r\n\t// the browser doesn't fire touchend/pointerup events but does fire\r\n\t// native dblclicks. See #4127.\r\n\t// Edge 14 also fires native dblclicks, but only for pointerType mouse, see #5180.\r\n\tobj.addEventListener('dblclick', handler, false);\r\n\r\n\treturn this;\r\n}\r\n\r\nexport function removeDoubleTapListener(obj, id) {\r\n\tvar touchstart = obj[_pre + _touchstart + id],\r\n\t    touchend = obj[_pre + _touchend + id],\r\n\t    dblclick = obj[_pre + 'dblclick' + id];\r\n\r\n\tobj.removeEventListener(_touchstart, touchstart, Browser.passiveEvents ? {passive: false} : false);\r\n\tobj.removeEventListener(_touchend, touchend, Browser.passiveEvents ? {passive: false} : false);\r\n\tobj.removeEventListener('dblclick', dblclick, false);\r\n\r\n\treturn this;\r\n}\r\n","import * as DomEvent from './DomEvent';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\nimport * as Browser from '../core/Browser';\r\n\r\n/*\r\n * @namespace DomUtil\r\n *\r\n * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n * tree, used by Leaflet internally.\r\n *\r\n * Most functions expecting or returning a `HTMLElement` also work for\r\n * SVG elements. The only difference is that classes refer to CSS classes\r\n * in HTML and SVG classes in SVG.\r\n */\r\n\r\n\r\n// @property TRANSFORM: String\r\n// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\nexport var TRANSFORM = testProp(\r\n\t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n// webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n// the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n// @property TRANSITION: String\r\n// Vendor-prefixed transition style name.\r\nexport var TRANSITION = testProp(\r\n\t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n// @property TRANSITION_END: String\r\n// Vendor-prefixed transitionend event name.\r\nexport var TRANSITION_END =\r\n\tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n// @function get(id: String|HTMLElement): HTMLElement\r\n// Returns an element given its DOM id, or returns the element itself\r\n// if it was passed directly.\r\nexport function get(id) {\r\n\treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n}\r\n\r\n// @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n// Returns the value for a certain style attribute on an element,\r\n// including computed values or values set through CSS.\r\nexport function getStyle(el, style) {\r\n\tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n\tif ((!value || value === 'auto') && document.defaultView) {\r\n\t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n\t\tvalue = css ? css[style] : null;\r\n\t}\r\n\treturn value === 'auto' ? null : value;\r\n}\r\n\r\n// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\nexport function create(tagName, className, container) {\r\n\tvar el = document.createElement(tagName);\r\n\tel.className = className || '';\r\n\r\n\tif (container) {\r\n\t\tcontainer.appendChild(el);\r\n\t}\r\n\treturn el;\r\n}\r\n\r\n// @function remove(el: HTMLElement)\r\n// Removes `el` from its parent element\r\nexport function remove(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent) {\r\n\t\tparent.removeChild(el);\r\n\t}\r\n}\r\n\r\n// @function empty(el: HTMLElement)\r\n// Removes all of `el`'s children elements from `el`\r\nexport function empty(el) {\r\n\twhile (el.firstChild) {\r\n\t\tel.removeChild(el.firstChild);\r\n\t}\r\n}\r\n\r\n// @function toFront(el: HTMLElement)\r\n// Makes `el` the last child of its parent, so it renders in front of the other children.\r\nexport function toFront(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.lastChild !== el) {\r\n\t\tparent.appendChild(el);\r\n\t}\r\n}\r\n\r\n// @function toBack(el: HTMLElement)\r\n// Makes `el` the first child of its parent, so it renders behind the other children.\r\nexport function toBack(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.firstChild !== el) {\r\n\t\tparent.insertBefore(el, parent.firstChild);\r\n\t}\r\n}\r\n\r\n// @function hasClass(el: HTMLElement, name: String): Boolean\r\n// Returns `true` if the element's class attribute contains `name`.\r\nexport function hasClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\treturn el.classList.contains(name);\r\n\t}\r\n\tvar className = getClass(el);\r\n\treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n}\r\n\r\n// @function addClass(el: HTMLElement, name: String)\r\n// Adds `name` to the element's class attribute.\r\nexport function addClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tvar classes = Util.splitWords(name);\r\n\t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n\t\t\tel.classList.add(classes[i]);\r\n\t\t}\r\n\t} else if (!hasClass(el, name)) {\r\n\t\tvar className = getClass(el);\r\n\t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n\t}\r\n}\r\n\r\n// @function removeClass(el: HTMLElement, name: String)\r\n// Removes `name` from the element's class attribute.\r\nexport function removeClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tel.classList.remove(name);\r\n\t} else {\r\n\t\tsetClass(el, Util.trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n\t}\r\n}\r\n\r\n// @function setClass(el: HTMLElement, name: String)\r\n// Sets the element's class.\r\nexport function setClass(el, name) {\r\n\tif (el.className.baseVal === undefined) {\r\n\t\tel.className = name;\r\n\t} else {\r\n\t\t// in case of SVG element\r\n\t\tel.className.baseVal = name;\r\n\t}\r\n}\r\n\r\n// @function getClass(el: HTMLElement): String\r\n// Returns the element's class.\r\nexport function getClass(el) {\r\n\t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n\t// (Required for linked SVG elements in IE11.)\r\n\tif (el.correspondingElement) {\r\n\t\tel = el.correspondingElement;\r\n\t}\r\n\treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n}\r\n\r\n// @function setOpacity(el: HTMLElement, opacity: Number)\r\n// Set the opacity of an element (including old IE support).\r\n// `opacity` must be a number from `0` to `1`.\r\nexport function setOpacity(el, value) {\r\n\tif ('opacity' in el.style) {\r\n\t\tel.style.opacity = value;\r\n\t} else if ('filter' in el.style) {\r\n\t\t_setOpacityIE(el, value);\r\n\t}\r\n}\r\n\r\nfunction _setOpacityIE(el, value) {\r\n\tvar filter = false,\r\n\t    filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n\t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n\ttry {\r\n\t\tfilter = el.filters.item(filterName);\r\n\t} catch (e) {\r\n\t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n\t\t// it isn't needed and breaks transparent pngs.\r\n\t\tif (value === 1) { return; }\r\n\t}\r\n\r\n\tvalue = Math.round(value * 100);\r\n\r\n\tif (filter) {\r\n\t\tfilter.Enabled = (value !== 100);\r\n\t\tfilter.Opacity = value;\r\n\t} else {\r\n\t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n\t}\r\n}\r\n\r\n// @function testProp(props: String[]): String|false\r\n// Goes through the array of style names and returns the first name\r\n// that is a valid style name for an element. If no such name is found,\r\n// it returns false. Useful for vendor-prefixed styles like `transform`.\r\nexport function testProp(props) {\r\n\tvar style = document.documentElement.style;\r\n\r\n\tfor (var i = 0; i < props.length; i++) {\r\n\t\tif (props[i] in style) {\r\n\t\t\treturn props[i];\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n// @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n// and optionally scaled by `scale`. Does not have an effect if the\r\n// browser doesn't support 3D CSS transforms.\r\nexport function setTransform(el, offset, scale) {\r\n\tvar pos = offset || new Point(0, 0);\r\n\r\n\tel.style[TRANSFORM] =\r\n\t\t(Browser.ie3d ?\r\n\t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n\t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n\t\t(scale ? ' scale(' + scale + ')' : '');\r\n}\r\n\r\n// @function setPosition(el: HTMLElement, position: Point)\r\n// Sets the position of `el` to coordinates specified by `position`,\r\n// using CSS translate or top/left positioning depending on the browser\r\n// (used by Leaflet internally to position its layers).\r\nexport function setPosition(el, point) {\r\n\r\n\t/*eslint-disable */\r\n\tel._leaflet_pos = point;\r\n\t/* eslint-enable */\r\n\r\n\tif (Browser.any3d) {\r\n\t\tsetTransform(el, point);\r\n\t} else {\r\n\t\tel.style.left = point.x + 'px';\r\n\t\tel.style.top = point.y + 'px';\r\n\t}\r\n}\r\n\r\n// @function getPosition(el: HTMLElement): Point\r\n// Returns the coordinates of an element previously positioned with setPosition.\r\nexport function getPosition(el) {\r\n\t// this method is only used for elements previously positioned using setPosition,\r\n\t// so it's safe to cache the position for performance\r\n\r\n\treturn el._leaflet_pos || new Point(0, 0);\r\n}\r\n\r\n// @function disableTextSelection()\r\n// Prevents the user from generating `selectstart` DOM events, usually generated\r\n// when the user drags the mouse through a page with text. Used internally\r\n// by Leaflet to override the behaviour of any click-and-drag interaction on\r\n// the map. Affects drag interactions on the whole document.\r\n\r\n// @function enableTextSelection()\r\n// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\nexport var disableTextSelection;\r\nexport var enableTextSelection;\r\nvar _userSelect;\r\nif ('onselectstart' in document) {\r\n\tdisableTextSelection = function () {\r\n\t\tDomEvent.on(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tDomEvent.off(window, 'selectstart', DomEvent.preventDefault);\r\n\t};\r\n} else {\r\n\tvar userSelectProperty = testProp(\r\n\t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n\tdisableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tvar style = document.documentElement.style;\r\n\t\t\t_userSelect = style[userSelectProperty];\r\n\t\t\tstyle[userSelectProperty] = 'none';\r\n\t\t}\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n\t\t\t_userSelect = undefined;\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// @function disableImageDrag()\r\n// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n// for `dragstart` DOM events, usually generated when the user drags an image.\r\nexport function disableImageDrag() {\r\n\tDomEvent.on(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\n// @function enableImageDrag()\r\n// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\nexport function enableImageDrag() {\r\n\tDomEvent.off(window, 'dragstart', DomEvent.preventDefault);\r\n}\r\n\r\nvar _outlineElement, _outlineStyle;\r\n// @function preventOutline(el: HTMLElement)\r\n// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n// of the element `el` invisible. Used internally by Leaflet to prevent\r\n// focusable elements from displaying an outline when the user performs a\r\n// drag interaction on them.\r\nexport function preventOutline(element) {\r\n\twhile (element.tabIndex === -1) {\r\n\t\telement = element.parentNode;\r\n\t}\r\n\tif (!element.style) { return; }\r\n\trestoreOutline();\r\n\t_outlineElement = element;\r\n\t_outlineStyle = element.style.outline;\r\n\telement.style.outline = 'none';\r\n\tDomEvent.on(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function restoreOutline()\r\n// Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\nexport function restoreOutline() {\r\n\tif (!_outlineElement) { return; }\r\n\t_outlineElement.style.outline = _outlineStyle;\r\n\t_outlineElement = undefined;\r\n\t_outlineStyle = undefined;\r\n\tDomEvent.off(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n// Finds the closest parent node which size (width and height) is not null.\r\nexport function getSizedParentNode(element) {\r\n\tdo {\r\n\t\telement = element.parentNode;\r\n\t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n\treturn element;\r\n}\r\n\r\n// @function getScale(el: HTMLElement): Object\r\n// Computes the CSS scale currently applied on the element.\r\n// Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\nexport function getScale(element) {\r\n\tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n\treturn {\r\n\t\tx: rect.width / element.offsetWidth || 1,\r\n\t\ty: rect.height / element.offsetHeight || 1,\r\n\t\tboundingClientRect: rect\r\n\t};\r\n}\r\n","import {Point} from '../geometry/Point';\r\nimport * as Util from '../core/Util';\r\nimport * as Browser from '../core/Browser';\r\nimport {addPointerListener, removePointerListener} from './DomEvent.Pointer';\r\nimport {addDoubleTapListener, removeDoubleTapListener} from './DomEvent.DoubleTap';\r\nimport {getScale} from './DomUtil';\r\n\r\n/*\r\n * @namespace DomEvent\r\n * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n */\r\n\r\n// Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Adds a listener function (`fn`) to a particular DOM event type of the\r\n// element `el`. You can optionally specify the context of the listener\r\n// (object the `this` keyword will point to). You can also pass several\r\n// space-separated types (e.g. `'click dblclick'`).\r\n\r\n// @alternative\r\n// @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nexport function on(obj, types, fn, context) {\r\n\r\n\tif (typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\taddOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\taddOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nvar eventsKey = '_leaflet_events';\r\n\r\n// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Removes a previously added listener function.\r\n// Note that if you passed a custom context to on, you must pass the same\r\n// context to `off` in order to remove the listener.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nexport function off(obj, types, fn, context) {\r\n\r\n\tif (typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\tremoveOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else if (types) {\r\n\t\ttypes = Util.splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\tremoveOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t} else {\r\n\t\tfor (var j in obj[eventsKey]) {\r\n\t\t\tremoveOne(obj, j, obj[eventsKey][j]);\r\n\t\t}\r\n\t\tdelete obj[eventsKey];\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nfunction browserFiresNativeDblClick() {\r\n\t// See https://github.com/w3c/pointerevents/issues/171\r\n\tif (Browser.pointer) {\r\n\t\treturn !(Browser.edge || Browser.safari);\r\n\t}\r\n}\r\n\r\nvar mouseSubst = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout',\r\n\twheel: !('onwheel' in window) && 'mousewheel'\r\n};\r\n\r\nfunction addOne(obj, type, fn, context) {\r\n\tvar id = type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : '');\r\n\r\n\tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n\tvar handler = function (e) {\r\n\t\treturn fn.call(context || obj, e || window.event);\r\n\t};\r\n\r\n\tvar originalHandler = handler;\r\n\r\n\tif (Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\t// Needs DomEvent.Pointer.js\r\n\t\taddPointerListener(obj, type, handler, id);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick') && !browserFiresNativeDblClick()) {\r\n\t\taddDoubleTapListener(obj, handler, id);\r\n\r\n\t} else if ('addEventListener' in obj) {\r\n\r\n\t\tif (type === 'touchstart' || type === 'touchmove' || type === 'wheel' ||  type === 'mousewheel') {\r\n\t\t\tobj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n\t\t} else if (type === 'mouseenter' || type === 'mouseleave') {\r\n\t\t\thandler = function (e) {\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tif (isExternalTarget(obj, e)) {\r\n\t\t\t\t\toriginalHandler(e);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tobj.addEventListener(mouseSubst[type], handler, false);\r\n\r\n\t\t} else {\r\n\t\t\tobj.addEventListener(type, originalHandler, false);\r\n\t\t}\r\n\r\n\t} else if ('attachEvent' in obj) {\r\n\t\tobj.attachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey] = obj[eventsKey] || {};\r\n\tobj[eventsKey][id] = handler;\r\n}\r\n\r\nfunction removeOne(obj, type, fn, context) {\r\n\r\n\tvar id = type + Util.stamp(fn) + (context ? '_' + Util.stamp(context) : ''),\r\n\t    handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n\tif (!handler) { return this; }\r\n\r\n\tif (Browser.pointer && type.indexOf('touch') === 0) {\r\n\t\tremovePointerListener(obj, type, id);\r\n\r\n\t} else if (Browser.touch && (type === 'dblclick') && !browserFiresNativeDblClick()) {\r\n\t\tremoveDoubleTapListener(obj, id);\r\n\r\n\t} else if ('removeEventListener' in obj) {\r\n\r\n\t\tobj.removeEventListener(mouseSubst[type] || type, handler, false);\r\n\r\n\t} else if ('detachEvent' in obj) {\r\n\t\tobj.detachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey][id] = null;\r\n}\r\n\r\n// @function stopPropagation(ev: DOMEvent): this\r\n// Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n// ```js\r\n// L.DomEvent.on(div, 'click', function (ev) {\r\n// \tL.DomEvent.stopPropagation(ev);\r\n// });\r\n// ```\r\nexport function stopPropagation(e) {\r\n\r\n\tif (e.stopPropagation) {\r\n\t\te.stopPropagation();\r\n\t} else if (e.originalEvent) {  // In case of Leaflet event.\r\n\t\te.originalEvent._stopped = true;\r\n\t} else {\r\n\t\te.cancelBubble = true;\r\n\t}\r\n\tskipped(e);\r\n\r\n\treturn this;\r\n}\r\n\r\n// @function disableScrollPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).\r\nexport function disableScrollPropagation(el) {\r\n\taddOne(el, 'wheel', stopPropagation);\r\n\treturn this;\r\n}\r\n\r\n// @function disableClickPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'click'`, `'doubleclick'`,\r\n// `'mousedown'` and `'touchstart'` events (plus browser variants).\r\nexport function disableClickPropagation(el) {\r\n\ton(el, 'mousedown touchstart dblclick', stopPropagation);\r\n\taddOne(el, 'click', fakeStop);\r\n\treturn this;\r\n}\r\n\r\n// @function preventDefault(ev: DOMEvent): this\r\n// Prevents the default action of the DOM Event `ev` from happening (such as\r\n// following a link in the href of the a element, or doing a POST request\r\n// with page reload when a `<form>` is submitted).\r\n// Use it inside listener functions.\r\nexport function preventDefault(e) {\r\n\tif (e.preventDefault) {\r\n\t\te.preventDefault();\r\n\t} else {\r\n\t\te.returnValue = false;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\n// @function stop(ev: DOMEvent): this\r\n// Does `stopPropagation` and `preventDefault` at the same time.\r\nexport function stop(e) {\r\n\tpreventDefault(e);\r\n\tstopPropagation(e);\r\n\treturn this;\r\n}\r\n\r\n// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n// Gets normalized mouse position from a DOM event relative to the\r\n// `container` (border excluded) or to the whole page if not specified.\r\nexport function getMousePosition(e, container) {\r\n\tif (!container) {\r\n\t\treturn new Point(e.clientX, e.clientY);\r\n\t}\r\n\r\n\tvar scale = getScale(container),\r\n\t    offset = scale.boundingClientRect; // left and top  values are in page scale (like the event clientX/Y)\r\n\r\n\treturn new Point(\r\n\t\t// offset.left/top values are in page scale (like clientX/Y),\r\n\t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n\t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n\t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n\t);\r\n}\r\n\r\n// Chrome on Win scrolls double the pixels as in other platforms (see #4538),\r\n// and Firefox scrolls device pixels, not CSS pixels\r\nvar wheelPxFactor =\r\n\t(Browser.win && Browser.chrome) ? 2 * window.devicePixelRatio :\r\n\tBrowser.gecko ? window.devicePixelRatio : 1;\r\n\r\n// @function getWheelDelta(ev: DOMEvent): Number\r\n// Gets normalized wheel delta from a wheel DOM event, in vertical\r\n// pixels scrolled (negative if scrolling down).\r\n// Events from pointing devices without precise scrolling are mapped to\r\n// a best guess of 60 pixels.\r\nexport function getWheelDelta(e) {\r\n\treturn (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n\t       (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n\t       (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n\t       (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n\t       (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n\t       e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n\t       (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n\t       e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n\t       0;\r\n}\r\n\r\nvar skipEvents = {};\r\n\r\nexport function fakeStop(e) {\r\n\t// fakes stopPropagation by setting a special event flag, checked/reset with skipped(e)\r\n\tskipEvents[e.type] = true;\r\n}\r\n\r\nexport function skipped(e) {\r\n\tvar events = skipEvents[e.type];\r\n\t// reset when checking, as it's only used in map container and propagates outside of the map\r\n\tskipEvents[e.type] = false;\r\n\treturn events;\r\n}\r\n\r\n// check if element really left/entered the event target (for mouseenter/mouseleave)\r\nexport function isExternalTarget(el, e) {\r\n\r\n\tvar related = e.relatedTarget;\r\n\r\n\tif (!related) { return true; }\r\n\r\n\ttry {\r\n\t\twhile (related && (related !== el)) {\r\n\t\t\trelated = related.parentNode;\r\n\t\t}\r\n\t} catch (err) {\r\n\t\treturn false;\r\n\t}\r\n\treturn (related !== el);\r\n}\r\n\r\n// @function addListener(…): this\r\n// Alias to [`L.DomEvent.on`](#domevent-on)\r\nexport {on as addListener};\r\n\r\n// @function removeListener(…): this\r\n// Alias to [`L.DomEvent.off`](#domevent-off)\r\nexport {off as removeListener};\r\n","import * as Util from '../core/Util';\nimport {Evented} from '../core/Events';\nimport * as DomUtil from '../dom/DomUtil';\n\n\n/*\n * @class PosAnimation\n * @aka L.PosAnimation\n * @inherits Evented\n * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n *\n * @example\n * ```js\n * var fx = new L.PosAnimation();\n * fx.run(el, [300, 500], 0.5);\n * ```\n *\n * @constructor L.PosAnimation()\n * Creates a `PosAnimation` object.\n *\n */\n\nexport var PosAnimation = Evented.extend({\n\n\t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n\t// Run an animation of a given element to a new position, optionally setting\n\t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n\t// argument of the [cubic bezier curve](http://cubic-bezier.com/#0,0,.5,1),\n\t// `0.5` by default).\n\trun: function (el, newPos, duration, easeLinearity) {\n\t\tthis.stop();\n\n\t\tthis._el = el;\n\t\tthis._inProgress = true;\n\t\tthis._duration = duration || 0.25;\n\t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n\t\tthis._startPos = DomUtil.getPosition(el);\n\t\tthis._offset = newPos.subtract(this._startPos);\n\t\tthis._startTime = +new Date();\n\n\t\t// @event start: Event\n\t\t// Fired when the animation starts\n\t\tthis.fire('start');\n\n\t\tthis._animate();\n\t},\n\n\t// @method stop()\n\t// Stops the animation (if currently running).\n\tstop: function () {\n\t\tif (!this._inProgress) { return; }\n\n\t\tthis._step(true);\n\t\tthis._complete();\n\t},\n\n\t_animate: function () {\n\t\t// animation loop\n\t\tthis._animId = Util.requestAnimFrame(this._animate, this);\n\t\tthis._step();\n\t},\n\n\t_step: function (round) {\n\t\tvar elapsed = (+new Date()) - this._startTime,\n\t\t    duration = this._duration * 1000;\n\n\t\tif (elapsed < duration) {\n\t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n\t\t} else {\n\t\t\tthis._runFrame(1);\n\t\t\tthis._complete();\n\t\t}\n\t},\n\n\t_runFrame: function (progress, round) {\n\t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n\t\tif (round) {\n\t\t\tpos._round();\n\t\t}\n\t\tDomUtil.setPosition(this._el, pos);\n\n\t\t// @event step: Event\n\t\t// Fired continuously during the animation.\n\t\tthis.fire('step');\n\t},\n\n\t_complete: function () {\n\t\tUtil.cancelAnimFrame(this._animId);\n\n\t\tthis._inProgress = false;\n\t\t// @event end: Event\n\t\t// Fired when the animation ends.\n\t\tthis.fire('end');\n\t},\n\n\t_easeOut: function (t) {\n\t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n\t}\n});\n","import * as Util from '../core/Util';\r\nimport {Evented} from '../core/Events';\r\nimport {EPSG3857} from '../geo/crs/CRS.EPSG3857';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Bounds, toBounds} from '../geometry/Bounds';\r\nimport {LatLng, toLatLng} from '../geo/LatLng';\r\nimport {LatLngBounds, toLatLngBounds} from '../geo/LatLngBounds';\r\nimport * as Browser from '../core/Browser';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {PosAnimation} from '../dom/PosAnimation';\r\n\r\n/*\r\n * @class Map\r\n * @aka L.Map\r\n * @inherits Evented\r\n *\r\n * The central class of the API — it is used to create a map on a page and manipulate it.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * // initialize the map on the \"map\" div with a given center and zoom\r\n * var map = L.map('map', {\r\n * \tcenter: [51.505, -0.09],\r\n * \tzoom: 13\r\n * });\r\n * ```\r\n *\r\n */\r\n\r\nexport var Map = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section Map State Options\r\n\t\t// @option crs: CRS = L.CRS.EPSG3857\r\n\t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n\t\t// sure what it means.\r\n\t\tcrs: EPSG3857,\r\n\r\n\t\t// @option center: LatLng = undefined\r\n\t\t// Initial geographic center of the map\r\n\t\tcenter: undefined,\r\n\r\n\t\t// @option zoom: Number = undefined\r\n\t\t// Initial map zoom level\r\n\t\tzoom: undefined,\r\n\r\n\t\t// @option minZoom: Number = *\r\n\t\t// Minimum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the lowest of their `minZoom` options will be used instead.\r\n\t\tminZoom: undefined,\r\n\r\n\t\t// @option maxZoom: Number = *\r\n\t\t// Maximum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the highest of their `maxZoom` options will be used instead.\r\n\t\tmaxZoom: undefined,\r\n\r\n\t\t// @option layers: Layer[] = []\r\n\t\t// Array of layers that will be added to the map initially\r\n\t\tlayers: [],\r\n\r\n\t\t// @option maxBounds: LatLngBounds = null\r\n\t\t// When this option is set, the map restricts the view to the given\r\n\t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n\t\t// outside the view. To set the restriction dynamically, use\r\n\t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n\t\tmaxBounds: undefined,\r\n\r\n\t\t// @option renderer: Renderer = *\r\n\t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n\t\t// or `L.Canvas` by default depending on browser support.\r\n\t\trenderer: undefined,\r\n\r\n\r\n\t\t// @section Animation Options\r\n\t\t// @option zoomAnimation: Boolean = true\r\n\t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tzoomAnimation: true,\r\n\r\n\t\t// @option zoomAnimationThreshold: Number = 4\r\n\t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n\t\tzoomAnimationThreshold: 4,\r\n\r\n\t\t// @option fadeAnimation: Boolean = true\r\n\t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tfadeAnimation: true,\r\n\r\n\t\t// @option markerZoomAnimation: Boolean = true\r\n\t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n\t\t// they will disappear for the length of the animation. By default it's\r\n\t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n\t\tmarkerZoomAnimation: true,\r\n\r\n\t\t// @option transform3DLimit: Number = 2^23\r\n\t\t// Defines the maximum size of a CSS translation transform. The default\r\n\t\t// value should not be changed unless a web browser positions layers in\r\n\t\t// the wrong place after doing a large `panBy`.\r\n\t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n\t\t// @section Interaction Options\r\n\t\t// @option zoomSnap: Number = 1\r\n\t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n\t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n\t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n\t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n\t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n\t\tzoomSnap: 1,\r\n\r\n\t\t// @option zoomDelta: Number = 1\r\n\t\t// Controls how much the map's zoom level will change after a\r\n\t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n\t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n\t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n\t\tzoomDelta: 1,\r\n\r\n\t\t// @option trackResize: Boolean = true\r\n\t\t// Whether the map automatically handles browser window resize to update itself.\r\n\t\ttrackResize: true\r\n\t},\r\n\r\n\tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// Make sure to assign internal flags at the beginning,\r\n\t\t// to avoid inconsistent state in some edge cases.\r\n\t\tthis._handlers = [];\r\n\t\tthis._layers = {};\r\n\t\tthis._zoomBoundLayers = {};\r\n\t\tthis._sizeChanged = true;\r\n\r\n\t\tthis._initContainer(id);\r\n\t\tthis._initLayout();\r\n\r\n\t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n\t\tthis._onResize = Util.bind(this._onResize, this);\r\n\r\n\t\tthis._initEvents();\r\n\r\n\t\tif (options.maxBounds) {\r\n\t\t\tthis.setMaxBounds(options.maxBounds);\r\n\t\t}\r\n\r\n\t\tif (options.zoom !== undefined) {\r\n\t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n\t\t}\r\n\r\n\t\tif (options.center && options.zoom !== undefined) {\r\n\t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n\t\t}\r\n\r\n\t\tthis.callInitHooks();\r\n\r\n\t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n\t\tthis._zoomAnimated = DomUtil.TRANSITION && Browser.any3d && !Browser.mobileOpera &&\r\n\t\t\t\tthis.options.zoomAnimation;\r\n\r\n\t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n\t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tthis._createAnimProxy();\r\n\t\t\tDomEvent.on(this._proxy, DomUtil.TRANSITION_END, this._catchTransitionEnd, this);\r\n\t\t}\r\n\r\n\t\tthis._addLayers(this.options.layers);\r\n\t},\r\n\r\n\r\n\t// @section Methods for modifying map state\r\n\r\n\t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) with the given\r\n\t// animation options.\r\n\tsetView: function (center, zoom, options) {\r\n\r\n\t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n\t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n\t\toptions = options || {};\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n\t\t\tif (options.animate !== undefined) {\r\n\t\t\t\toptions.zoom = Util.extend({animate: options.animate}, options.zoom);\r\n\t\t\t\toptions.pan = Util.extend({animate: options.animate, duration: options.duration}, options.pan);\r\n\t\t\t}\r\n\r\n\t\t\t// try animating pan or zoom\r\n\t\t\tvar moved = (this._zoom !== zoom) ?\r\n\t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n\t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n\t\t\tif (moved) {\r\n\t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// animation didn't start, just reset the map view\r\n\t\tthis._resetView(center, zoom);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the zoom of the map.\r\n\tsetZoom: function (zoom, options) {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthis._zoom = zoom;\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n\t},\r\n\r\n\t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n\t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomIn: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom + delta, options);\r\n\t},\r\n\r\n\t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n\t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomOut: function (delta, options) {\r\n\t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom - delta, options);\r\n\t},\r\n\r\n\t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified geographical point on the map\r\n\t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n\t// @alternative\r\n\t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n\tsetZoomAround: function (latlng, zoom, options) {\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n\t\t    centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n\t\t    newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n\t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n\t},\r\n\r\n\t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n\t\t    zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n\t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n\t\tif (zoom === Infinity) {\r\n\t\t\treturn {\r\n\t\t\t\tcenter: bounds.getCenter(),\r\n\t\t\t\tzoom: zoom\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n\t\t    swPoint = this.project(bounds.getSouthWest(), zoom),\r\n\t\t    nePoint = this.project(bounds.getNorthEast(), zoom),\r\n\t\t    center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n\t\treturn {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom\r\n\t\t};\r\n\t},\r\n\r\n\t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets a map view that contains the given geographical bounds with the\r\n\t// maximum zoom level possible.\r\n\tfitBounds: function (bounds, options) {\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthrow new Error('Bounds are not valid.');\r\n\t\t}\r\n\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.setView(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method fitWorld(options?: fitBounds options): this\r\n\t// Sets a map view that mostly contains the whole world with the maximum\r\n\t// zoom level possible.\r\n\tfitWorld: function (options) {\r\n\t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n\t},\r\n\r\n\t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n\t// Pans the map to a given center.\r\n\tpanTo: function (center, options) { // (LatLng)\r\n\t\treturn this.setView(center, this._zoom, {pan: options});\r\n\t},\r\n\r\n\t// @method panBy(offset: Point, options?: Pan options): this\r\n\t// Pans the map by a given number of pixels (animated).\r\n\tpanBy: function (offset, options) {\r\n\t\toffset = toPoint(offset).round();\r\n\t\toptions = options || {};\r\n\r\n\t\tif (!offset.x && !offset.y) {\r\n\t\t\treturn this.fire('moveend');\r\n\t\t}\r\n\t\t// If we pan too far, Chrome gets issues with tiles\r\n\t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n\t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (!this._panAnim) {\r\n\t\t\tthis._panAnim = new PosAnimation();\r\n\r\n\t\t\tthis._panAnim.on({\r\n\t\t\t\t'step': this._onPanTransitionStep,\r\n\t\t\t\t'end': this._onPanTransitionEnd\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\t// don't fire movestart if animating inertia\r\n\t\tif (!options.noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\r\n\t\t// animate pan unless animate: false specified\r\n\t\tif (options.animate !== false) {\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n\t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n\t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n\t\t} else {\r\n\t\t\tthis._rawPanBy(offset);\r\n\t\t\tthis.fire('move').fire('moveend');\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n\t// pan-zoom animation.\r\n\tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tif (options.animate === false || !Browser.any3d) {\r\n\t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tvar from = this.project(this.getCenter()),\r\n\t\t    to = this.project(targetCenter),\r\n\t\t    size = this.getSize(),\r\n\t\t    startZoom = this._zoom;\r\n\r\n\t\ttargetCenter = toLatLng(targetCenter);\r\n\t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n\t\tvar w0 = Math.max(size.x, size.y),\r\n\t\t    w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n\t\t    u1 = (to.distanceTo(from)) || 1,\r\n\t\t    rho = 1.42,\r\n\t\t    rho2 = rho * rho;\r\n\r\n\t\tfunction r(i) {\r\n\t\t\tvar s1 = i ? -1 : 1,\r\n\t\t\t    s2 = i ? w1 : w0,\r\n\t\t\t    t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n\t\t\t    b1 = 2 * s2 * rho2 * u1,\r\n\t\t\t    b = t1 / b1,\r\n\t\t\t    sq = Math.sqrt(b * b + 1) - b;\r\n\r\n\t\t\t    // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n\t\t\t    // thus triggering an infinite loop in flyTo\r\n\t\t\t    var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n\t\t\treturn log;\r\n\t\t}\r\n\r\n\t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n\t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n\t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n\t\tvar r0 = r(0);\r\n\r\n\t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n\t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n\t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n\t\tvar start = Date.now(),\r\n\t\t    S = (r(1) - r0) / rho,\r\n\t\t    duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n\t\tfunction frame() {\r\n\t\t\tvar t = (Date.now() - start) / duration,\r\n\t\t\t    s = easeOut(t) * S;\r\n\r\n\t\t\tif (t <= 1) {\r\n\t\t\t\tthis._flyToFrame = Util.requestAnimFrame(frame, this);\r\n\r\n\t\t\t\tthis._move(\r\n\t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n\t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n\t\t\t\t\t{flyTo: true});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis\r\n\t\t\t\t\t._move(targetCenter, targetZoom)\r\n\t\t\t\t\t._moveEnd(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n\t\tframe.call(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n\t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n\tflyToBounds: function (bounds, options) {\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.flyTo(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method setMaxBounds(bounds: LatLngBounds): this\r\n\t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n\tsetMaxBounds: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthis.options.maxBounds = null;\r\n\t\t\treturn this.off('moveend', this._panInsideMaxBounds);\r\n\t\t} else if (this.options.maxBounds) {\r\n\t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n\t\t}\r\n\r\n\t\tthis.options.maxBounds = bounds;\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\tthis._panInsideMaxBounds();\r\n\t\t}\r\n\r\n\t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n\t},\r\n\r\n\t// @method setMinZoom(zoom: Number): this\r\n\t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n\tsetMinZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.minZoom;\r\n\t\tthis.options.minZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() < this.options.minZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setMaxZoom(zoom: Number): this\r\n\t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n\tsetMaxZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.maxZoom;\r\n\t\tthis.options.maxZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n\t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n\tpanInsideBounds: function (bounds, options) {\r\n\t\tthis._enforcingBounds = true;\r\n\t\tvar center = this.getCenter(),\r\n\t\t    newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n\t\tif (!center.equals(newCenter)) {\r\n\t\t\tthis.panTo(newCenter, options);\r\n\t\t}\r\n\r\n\t\tthis._enforcingBounds = false;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInside(latlng: LatLng, options?: options): this\r\n\t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n\t// `padding`, `paddingTopLeft` and `paddingTopRight` options to fit\r\n\t// the display to more restricted bounds, like [`fitBounds`](#map-fitbounds).\r\n\t// If `latlng` is already within the (optionally padded) display bounds,\r\n\t// the map will not be panned.\r\n\tpanInside: function (latlng, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\t\t    center = this.getCenter(),\r\n\t\t    pixelCenter = this.project(center),\r\n\t\t    pixelPoint = this.project(latlng),\r\n\t\t    pixelBounds = this.getPixelBounds(),\r\n\t\t    halfPixelBounds = pixelBounds.getSize().divideBy(2),\r\n\t\t    paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]);\r\n\r\n\t\tif (!paddedBounds.contains(pixelPoint)) {\r\n\t\t\tthis._enforcingBounds = true;\r\n\t\t\tvar diff = pixelCenter.subtract(pixelPoint),\r\n\t\t\t    newCenter = toPoint(pixelPoint.x + diff.x, pixelPoint.y + diff.y);\r\n\r\n\t\t\tif (pixelPoint.x < paddedBounds.min.x || pixelPoint.x > paddedBounds.max.x) {\r\n\t\t\t\tnewCenter.x = pixelCenter.x - diff.x;\r\n\t\t\t\tif (diff.x > 0) {\r\n\t\t\t\t\tnewCenter.x += halfPixelBounds.x - paddingTL.x;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewCenter.x -= halfPixelBounds.x - paddingBR.x;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (pixelPoint.y < paddedBounds.min.y || pixelPoint.y > paddedBounds.max.y) {\r\n\t\t\t\tnewCenter.y = pixelCenter.y - diff.y;\r\n\t\t\t\tif (diff.y > 0) {\r\n\t\t\t\t\tnewCenter.y += halfPixelBounds.y - paddingTL.y;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewCenter.y -= halfPixelBounds.y - paddingBR.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.panTo(this.unproject(newCenter), options);\r\n\t\t\tthis._enforcingBounds = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method invalidateSize(options: Zoom/pan options): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n\t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n\t// that it doesn't happen often even if the method is called many\r\n\t// times in a row.\r\n\r\n\t// @alternative\r\n\t// @method invalidateSize(animate: Boolean): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default.\r\n\tinvalidateSize: function (options) {\r\n\t\tif (!this._loaded) { return this; }\r\n\r\n\t\toptions = Util.extend({\r\n\t\t\tanimate: false,\r\n\t\t\tpan: true\r\n\t\t}, options === true ? {animate: true} : options);\r\n\r\n\t\tvar oldSize = this.getSize();\r\n\t\tthis._sizeChanged = true;\r\n\t\tthis._lastCenter = null;\r\n\r\n\t\tvar newSize = this.getSize(),\r\n\t\t    oldCenter = oldSize.divideBy(2).round(),\r\n\t\t    newCenter = newSize.divideBy(2).round(),\r\n\t\t    offset = oldCenter.subtract(newCenter);\r\n\r\n\t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n\t\tif (options.animate && options.pan) {\r\n\t\t\tthis.panBy(offset);\r\n\r\n\t\t} else {\r\n\t\t\tif (options.pan) {\r\n\t\t\t\tthis._rawPanBy(offset);\r\n\t\t\t}\r\n\r\n\t\t\tthis.fire('move');\r\n\r\n\t\t\tif (options.debounceMoveend) {\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\tthis._sizeTimer = setTimeout(Util.bind(this.fire, this, 'moveend'), 200);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fire('moveend');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @section Map state change events\r\n\t\t// @event resize: ResizeEvent\r\n\t\t// Fired when the map is resized.\r\n\t\treturn this.fire('resize', {\r\n\t\t\toldSize: oldSize,\r\n\t\t\tnewSize: newSize\r\n\t\t});\r\n\t},\r\n\r\n\t// @section Methods for modifying map state\r\n\t// @method stop(): this\r\n\t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n\tstop: function () {\r\n\t\tthis.setZoom(this._limitZoom(this._zoom));\r\n\t\tif (!this.options.zoomSnap) {\r\n\t\t\tthis.fire('viewreset');\r\n\t\t}\r\n\t\treturn this._stop();\r\n\t},\r\n\r\n\t// @section Geolocation methods\r\n\t// @method locate(options?: Locate options): this\r\n\t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n\t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n\t// and optionally sets the map view to the user's location with respect to\r\n\t// detection accuracy (or to the world view if geolocation failed).\r\n\t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n\t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n\t// See `Locate options` for more details.\r\n\tlocate: function (options) {\r\n\r\n\t\toptions = this._locateOptions = Util.extend({\r\n\t\t\ttimeout: 10000,\r\n\t\t\twatch: false\r\n\t\t\t// setView: false\r\n\t\t\t// maxZoom: <Number>\r\n\t\t\t// maximumAge: 0\r\n\t\t\t// enableHighAccuracy: false\r\n\t\t}, options);\r\n\r\n\t\tif (!('geolocation' in navigator)) {\r\n\t\t\tthis._handleGeolocationError({\r\n\t\t\t\tcode: 0,\r\n\t\t\t\tmessage: 'Geolocation not supported.'\r\n\t\t\t});\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar onResponse = Util.bind(this._handleGeolocationResponse, this),\r\n\t\t    onError = Util.bind(this._handleGeolocationError, this);\r\n\r\n\t\tif (options.watch) {\r\n\t\t\tthis._locationWatchId =\r\n\t\t\t        navigator.geolocation.watchPosition(onResponse, onError, options);\r\n\t\t} else {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method stopLocate(): this\r\n\t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n\t// and aborts resetting the map view if map.locate was called with\r\n\t// `{setView: true}`.\r\n\tstopLocate: function () {\r\n\t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n\t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n\t\t}\r\n\t\tif (this._locateOptions) {\r\n\t\t\tthis._locateOptions.setView = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_handleGeolocationError: function (error) {\r\n\t\tvar c = error.code,\r\n\t\t    message = error.message ||\r\n\t\t            (c === 1 ? 'permission denied' :\r\n\t\t            (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n\t\tif (this._locateOptions.setView && !this._loaded) {\r\n\t\t\tthis.fitWorld();\r\n\t\t}\r\n\r\n\t\t// @section Location events\r\n\t\t// @event locationerror: ErrorEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n\t\tthis.fire('locationerror', {\r\n\t\t\tcode: c,\r\n\t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n\t\t});\r\n\t},\r\n\r\n\t_handleGeolocationResponse: function (pos) {\r\n\t\tvar lat = pos.coords.latitude,\r\n\t\t    lng = pos.coords.longitude,\r\n\t\t    latlng = new LatLng(lat, lng),\r\n\t\t    bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n\t\t    options = this._locateOptions;\r\n\r\n\t\tif (options.setView) {\r\n\t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n\t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\tlatlng: latlng,\r\n\t\t\tbounds: bounds,\r\n\t\t\ttimestamp: pos.timestamp\r\n\t\t};\r\n\r\n\t\tfor (var i in pos.coords) {\r\n\t\t\tif (typeof pos.coords[i] === 'number') {\r\n\t\t\t\tdata[i] = pos.coords[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @event locationfound: LocationEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n\t\t// went successfully.\r\n\t\tthis.fire('locationfound', data);\r\n\t},\r\n\r\n\t// TODO Appropriate docs section?\r\n\t// @section Other Methods\r\n\t// @method addHandler(name: String, HandlerClass: Function): this\r\n\t// Adds a new `Handler` to the map, given its name and constructor function.\r\n\taddHandler: function (name, HandlerClass) {\r\n\t\tif (!HandlerClass) { return this; }\r\n\r\n\t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n\t\tthis._handlers.push(handler);\r\n\r\n\t\tif (this.options[name]) {\r\n\t\t\thandler.enable();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove(): this\r\n\t// Destroys the map and clears all related event listeners.\r\n\tremove: function () {\r\n\r\n\t\tthis._initEvents(true);\r\n\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n\r\n\t\tif (this._containerId !== this._container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is being reused by another instance');\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// throws error in IE6-8\r\n\t\t\tdelete this._container._leaflet_id;\r\n\t\t\tdelete this._containerId;\r\n\t\t} catch (e) {\r\n\t\t\t/*eslint-disable */\r\n\t\t\tthis._container._leaflet_id = undefined;\r\n\t\t\t/* eslint-enable */\r\n\t\t\tthis._containerId = undefined;\r\n\t\t}\r\n\r\n\t\tif (this._locationWatchId !== undefined) {\r\n\t\t\tthis.stopLocate();\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tDomUtil.remove(this._mapPane);\r\n\r\n\t\tif (this._clearControlPos) {\r\n\t\t\tthis._clearControlPos();\r\n\t\t}\r\n\t\tif (this._resizeRequest) {\r\n\t\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\t\tthis._resizeRequest = null;\r\n\t\t}\r\n\r\n\t\tthis._clearHandlers();\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\t// @section Map state change events\r\n\t\t\t// @event unload: Event\r\n\t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n\t\t\tthis.fire('unload');\r\n\t\t}\r\n\r\n\t\tvar i;\r\n\t\tfor (i in this._layers) {\r\n\t\t\tthis._layers[i].remove();\r\n\t\t}\r\n\t\tfor (i in this._panes) {\r\n\t\t\tDomUtil.remove(this._panes[i]);\r\n\t\t}\r\n\r\n\t\tthis._layers = [];\r\n\t\tthis._panes = [];\r\n\t\tdelete this._mapPane;\r\n\t\tdelete this._renderer;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n\t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n\t// then returns it. The pane is created as a child of `container`, or\r\n\t// as a child of the main map pane if not set.\r\n\tcreatePane: function (name, container) {\r\n\t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n\t\t    pane = DomUtil.create('div', className, container || this._mapPane);\r\n\r\n\t\tif (name) {\r\n\t\t\tthis._panes[name] = pane;\r\n\t\t}\r\n\t\treturn pane;\r\n\t},\r\n\r\n\t// @section Methods for Getting Map State\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the geographical center of the map view\r\n\tgetCenter: function () {\r\n\t\tthis._checkIfLoaded();\r\n\r\n\t\tif (this._lastCenter && !this._moved()) {\r\n\t\t\treturn this._lastCenter;\r\n\t\t}\r\n\t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// @method getZoom(): Number\r\n\t// Returns the current zoom level of the map view\r\n\tgetZoom: function () {\r\n\t\treturn this._zoom;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the geographical bounds visible in the current map view\r\n\tgetBounds: function () {\r\n\t\tvar bounds = this.getPixelBounds(),\r\n\t\t    sw = this.unproject(bounds.getBottomLeft()),\r\n\t\t    ne = this.unproject(bounds.getTopRight());\r\n\r\n\t\treturn new LatLngBounds(sw, ne);\r\n\t},\r\n\r\n\t// @method getMinZoom(): Number\r\n\t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n\tgetMinZoom: function () {\r\n\t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n\t},\r\n\r\n\t// @method getMaxZoom(): Number\r\n\t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n\tgetMaxZoom: function () {\r\n\t\treturn this.options.maxZoom === undefined ?\r\n\t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n\t\t\tthis.options.maxZoom;\r\n\t},\r\n\r\n\t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n\t// Returns the maximum zoom level on which the given bounds fit to the map\r\n\t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n\t// instead returns the minimum zoom level on which the map view fits into\r\n\t// the given bounds in its entirety.\r\n\tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n\t\tvar zoom = this.getZoom() || 0,\r\n\t\t    min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    nw = bounds.getNorthWest(),\r\n\t\t    se = bounds.getSouthEast(),\r\n\t\t    size = this.getSize().subtract(padding),\r\n\t\t    boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n\t\t    snap = Browser.any3d ? this.options.zoomSnap : 1,\r\n\t\t    scalex = size.x / boundsSize.x,\r\n\t\t    scaley = size.y / boundsSize.y,\r\n\t\t    scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n\t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n\t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n\t\t}\r\n\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the current size of the map container (in pixels).\r\n\tgetSize: function () {\r\n\t\tif (!this._size || this._sizeChanged) {\r\n\t\t\tthis._size = new Point(\r\n\t\t\t\tthis._container.clientWidth || 0,\r\n\t\t\t\tthis._container.clientHeight || 0);\r\n\r\n\t\t\tthis._sizeChanged = false;\r\n\t\t}\r\n\t\treturn this._size.clone();\r\n\t},\r\n\r\n\t// @method getPixelBounds(): Bounds\r\n\t// Returns the bounds of the current map view in projected pixel\r\n\t// coordinates (sometimes useful in layer and overlay implementations).\r\n\tgetPixelBounds: function (center, zoom) {\r\n\t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n\t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n\t},\r\n\r\n\t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n\t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n\t// since there can be negative offsets.\r\n\t// @method getPixelOrigin(): Point\r\n\t// Returns the projected pixel coordinates of the top left point of\r\n\t// the map layer (useful in custom layer and overlay implementations).\r\n\tgetPixelOrigin: function () {\r\n\t\tthis._checkIfLoaded();\r\n\t\treturn this._pixelOrigin;\r\n\t},\r\n\r\n\t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n\t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n\t// If `zoom` is omitted, the map's current zoom level is used.\r\n\tgetPixelWorldBounds: function (zoom) {\r\n\t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n\t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n\tgetPane: function (pane) {\r\n\t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n\t},\r\n\r\n\t// @method getPanes(): Object\r\n\t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n\t// the panes as values.\r\n\tgetPanes: function () {\r\n\t\treturn this._panes;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTML element that contains the map.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\r\n\t// @section Conversion Methods\r\n\r\n\t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n\t// Returns the scale factor to be applied to a map transition from zoom level\r\n\t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n\tgetZoomScale: function (toZoom, fromZoom) {\r\n\t\t// TODO replace with universal implementation after refactoring projections\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n\t},\r\n\r\n\t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n\t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n\t// level and everything is scaled by a factor of `scale`. Inverse of\r\n\t// [`getZoomScale`](#map-getZoomScale).\r\n\tgetScaleZoom: function (scale, fromZoom) {\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n\t\treturn isNaN(zoom) ? Infinity : zoom;\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng, zoom: Number): Point\r\n\t// Projects a geographical coordinate `LatLng` according to the projection\r\n\t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n\t// `Transformation`. The result is pixel coordinate relative to\r\n\t// the CRS origin.\r\n\tproject: function (latlng, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n\t},\r\n\r\n\t// @method unproject(point: Point, zoom: Number): LatLng\r\n\t// Inverse of [`project`](#map-project).\r\n\tunproject: function (point, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n\t},\r\n\r\n\t// @method layerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding geographical coordinate (for the current zoom level).\r\n\tlayerPointToLatLng: function (point) {\r\n\t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n\t\treturn this.unproject(projectedPoint);\r\n\t},\r\n\r\n\t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the [origin pixel](#map-getpixelorigin).\r\n\tlatLngToLayerPoint: function (latlng) {\r\n\t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n\t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n\t},\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n\t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n\t// CRS's bounds.\r\n\t// By default this means longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees.\r\n\twrapLatLng: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n\t// its center is within the CRS's bounds.\r\n\t// By default this means the center longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees, and the majority of the bounds\r\n\t// overlaps the CRS's bounds.\r\n\twrapLatLngBounds: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates according to\r\n\t// the map's CRS. By default this measures distance in meters.\r\n\tdistance: function (latlng1, latlng2) {\r\n\t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n\t},\r\n\r\n\t// @method containerPointToLayerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n\t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n\tcontainerPointToLayerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method layerPointToContainerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding pixel coordinate relative to the map container.\r\n\tlayerPointToContainerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).add(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method containerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the map container, returns\r\n\t// the corresponding geographical coordinate (for the current zoom level).\r\n\tcontainerPointToLatLng: function (point) {\r\n\t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n\t\treturn this.layerPointToLatLng(layerPoint);\r\n\t},\r\n\r\n\t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the map container.\r\n\tlatLngToContainerPoint: function (latlng) {\r\n\t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n\t},\r\n\r\n\t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n\t// map container where the event took place.\r\n\tmouseEventToContainerPoint: function (e) {\r\n\t\treturn DomEvent.getMousePosition(e, this._container);\r\n\t},\r\n\r\n\t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n\t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n\tmouseEventToLayerPoint: function (e) {\r\n\t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n\t},\r\n\r\n\t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n\t// Given a MouseEvent object, returns geographical coordinate where the\r\n\t// event took place.\r\n\tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n\t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n\t},\r\n\r\n\r\n\t// map initialization methods\r\n\r\n\t_initContainer: function (id) {\r\n\t\tvar container = this._container = DomUtil.get(id);\r\n\r\n\t\tif (!container) {\r\n\t\t\tthrow new Error('Map container not found.');\r\n\t\t} else if (container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is already initialized.');\r\n\t\t}\r\n\r\n\t\tDomEvent.on(container, 'scroll', this._onScroll, this);\r\n\t\tthis._containerId = Util.stamp(container);\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar container = this._container;\r\n\r\n\t\tthis._fadeAnimated = this.options.fadeAnimation && Browser.any3d;\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-container' +\r\n\t\t\t(Browser.touch ? ' leaflet-touch' : '') +\r\n\t\t\t(Browser.retina ? ' leaflet-retina' : '') +\r\n\t\t\t(Browser.ielt9 ? ' leaflet-oldie' : '') +\r\n\t\t\t(Browser.safari ? ' leaflet-safari' : '') +\r\n\t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n\t\tvar position = DomUtil.getStyle(container, 'position');\r\n\r\n\t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed') {\r\n\t\t\tcontainer.style.position = 'relative';\r\n\t\t}\r\n\r\n\t\tthis._initPanes();\r\n\r\n\t\tif (this._initControlPos) {\r\n\t\t\tthis._initControlPos();\r\n\t\t}\r\n\t},\r\n\r\n\t_initPanes: function () {\r\n\t\tvar panes = this._panes = {};\r\n\t\tthis._paneRenderers = {};\r\n\r\n\t\t// @section\r\n\t\t//\r\n\t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n\t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n\t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n\t\t// [`map.createPane`](#map-createpane) method.\r\n\t\t//\r\n\t\t// Every map has the following default panes that differ only in zIndex.\r\n\t\t//\r\n\t\t// @pane mapPane: HTMLElement = 'auto'\r\n\t\t// Pane that contains all other map panes\r\n\r\n\t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\t// @pane tilePane: HTMLElement = 200\r\n\t\t// Pane for `GridLayer`s and `TileLayer`s\r\n\t\tthis.createPane('tilePane');\r\n\t\t// @pane overlayPane: HTMLElement = 400\r\n\t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n\t\tthis.createPane('shadowPane');\r\n\t\t// @pane shadowPane: HTMLElement = 500\r\n\t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n\t\tthis.createPane('overlayPane');\r\n\t\t// @pane markerPane: HTMLElement = 600\r\n\t\t// Pane for `Icon`s of `Marker`s\r\n\t\tthis.createPane('markerPane');\r\n\t\t// @pane tooltipPane: HTMLElement = 650\r\n\t\t// Pane for `Tooltip`s.\r\n\t\tthis.createPane('tooltipPane');\r\n\t\t// @pane popupPane: HTMLElement = 700\r\n\t\t// Pane for `Popup`s.\r\n\t\tthis.createPane('popupPane');\r\n\r\n\t\tif (!this.options.markerZoomAnimation) {\r\n\t\t\tDomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide');\r\n\t\t\tDomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// private methods that modify map state\r\n\r\n\t// @section Map state change events\r\n\t_resetView: function (center, zoom) {\r\n\t\tDomUtil.setPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\tvar loading = !this._loaded;\r\n\t\tthis._loaded = true;\r\n\t\tzoom = this._limitZoom(zoom);\r\n\r\n\t\tthis.fire('viewprereset');\r\n\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\t\tthis\r\n\t\t\t._moveStart(zoomChanged, false)\r\n\t\t\t._move(center, zoom)\r\n\t\t\t._moveEnd(zoomChanged);\r\n\r\n\t\t// @event viewreset: Event\r\n\t\t// Fired when the map needs to redraw its content (this usually happens\r\n\t\t// on map zoom or load). Very useful for creating custom overlays.\r\n\t\tthis.fire('viewreset');\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the map is initialized (when its center and zoom are set\r\n\t\t// for the first time).\r\n\t\tif (loading) {\r\n\t\t\tthis.fire('load');\r\n\t\t}\r\n\t},\r\n\r\n\t_moveStart: function (zoomChanged, noMoveStart) {\r\n\t\t// @event zoomstart: Event\r\n\t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n\t\t// @event movestart: Event\r\n\t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomstart');\r\n\t\t}\r\n\t\tif (!noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_move: function (center, zoom, data) {\r\n\t\tif (zoom === undefined) {\r\n\t\t\tzoom = this._zoom;\r\n\t\t}\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n\t\tthis._zoom = zoom;\r\n\t\tthis._lastCenter = center;\r\n\t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n\t\t// @event zoom: Event\r\n\t\t// Fired repeatedly during any change in zoom level, including zoom\r\n\t\t// and fly animations.\r\n\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\tthis.fire('zoom', data);\r\n\t\t}\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired repeatedly during any movement of the map, including pan and\r\n\t\t// fly animations.\r\n\t\treturn this.fire('move', data);\r\n\t},\r\n\r\n\t_moveEnd: function (zoomChanged) {\r\n\t\t// @event zoomend: Event\r\n\t\t// Fired when the map has changed, after any animations.\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomend');\r\n\t\t}\r\n\r\n\t\t// @event moveend: Event\r\n\t\t// Fired when the center of the map stops changing (e.g. user stopped\r\n\t\t// dragging the map).\r\n\t\treturn this.fire('moveend');\r\n\t},\r\n\r\n\t_stop: function () {\r\n\t\tUtil.cancelAnimFrame(this._flyToFrame);\r\n\t\tif (this._panAnim) {\r\n\t\t\tthis._panAnim.stop();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_rawPanBy: function (offset) {\r\n\t\tDomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n\t},\r\n\r\n\t_getZoomSpan: function () {\r\n\t\treturn this.getMaxZoom() - this.getMinZoom();\r\n\t},\r\n\r\n\t_panInsideMaxBounds: function () {\r\n\t\tif (!this._enforcingBounds) {\r\n\t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n\t\t}\r\n\t},\r\n\r\n\t_checkIfLoaded: function () {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthrow new Error('Set map center and zoom first.');\r\n\t\t}\r\n\t},\r\n\r\n\t// DOM event handling\r\n\r\n\t// @section Interaction events\r\n\t_initEvents: function (remove) {\r\n\t\tthis._targets = {};\r\n\t\tthis._targets[Util.stamp(this._container)] = this;\r\n\r\n\t\tvar onOff = remove ? DomEvent.off : DomEvent.on;\r\n\r\n\t\t// @event click: MouseEvent\r\n\t\t// Fired when the user clicks (or taps) the map.\r\n\t\t// @event dblclick: MouseEvent\r\n\t\t// Fired when the user double-clicks (or double-taps) the map.\r\n\t\t// @event mousedown: MouseEvent\r\n\t\t// Fired when the user pushes the mouse button on the map.\r\n\t\t// @event mouseup: MouseEvent\r\n\t\t// Fired when the user releases the mouse button on the map.\r\n\t\t// @event mouseover: MouseEvent\r\n\t\t// Fired when the mouse enters the map.\r\n\t\t// @event mouseout: MouseEvent\r\n\t\t// Fired when the mouse leaves the map.\r\n\t\t// @event mousemove: MouseEvent\r\n\t\t// Fired while the mouse moves over the map.\r\n\t\t// @event contextmenu: MouseEvent\r\n\t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n\t\t// default browser context menu from showing if there are listeners on\r\n\t\t// this event. Also fired on mobile when the user holds a single touch\r\n\t\t// for a second (also called long press).\r\n\t\t// @event keypress: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n\t\t// @event keydown: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n\t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n\t\t// that do not produce a character value.\r\n\t\t// @event keyup: KeyboardEvent\r\n\t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n\t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n\t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n\t\tif (this.options.trackResize) {\r\n\t\t\tonOff(window, 'resize', this._onResize, this);\r\n\t\t}\r\n\r\n\t\tif (Browser.any3d && this.options.transform3DLimit) {\r\n\t\t\t(remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n\t\t}\r\n\t},\r\n\r\n\t_onResize: function () {\r\n\t\tUtil.cancelAnimFrame(this._resizeRequest);\r\n\t\tthis._resizeRequest = Util.requestAnimFrame(\r\n\t\t        function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n\t},\r\n\r\n\t_onScroll: function () {\r\n\t\tthis._container.scrollTop  = 0;\r\n\t\tthis._container.scrollLeft = 0;\r\n\t},\r\n\r\n\t_onMoveEnd: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n\t\t\t// a pixel offset on very high values, see: http://jsfiddle.net/dg6r5hhb/\r\n\t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n\t\t}\r\n\t},\r\n\r\n\t_findEventTargets: function (e, type) {\r\n\t\tvar targets = [],\r\n\t\t    target,\r\n\t\t    isHover = type === 'mouseout' || type === 'mouseover',\r\n\t\t    src = e.target || e.srcElement,\r\n\t\t    dragging = false;\r\n\r\n\t\twhile (src) {\r\n\t\t\ttarget = this._targets[Util.stamp(src)];\r\n\t\t\tif (target && (type === 'click' || type === 'preclick') && !e._simulated && this._draggableMoved(target)) {\r\n\t\t\t\t// Prevent firing click after you just dragged an object.\r\n\t\t\t\tdragging = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (target && target.listens(type, true)) {\r\n\t\t\t\tif (isHover && !DomEvent.isExternalTarget(src, e)) { break; }\r\n\t\t\t\ttargets.push(target);\r\n\t\t\t\tif (isHover) { break; }\r\n\t\t\t}\r\n\t\t\tif (src === this._container) { break; }\r\n\t\t\tsrc = src.parentNode;\r\n\t\t}\r\n\t\tif (!targets.length && !dragging && !isHover && DomEvent.isExternalTarget(src, e)) {\r\n\t\t\ttargets = [this];\r\n\t\t}\r\n\t\treturn targets;\r\n\t},\r\n\r\n\t_handleDOMEvent: function (e) {\r\n\t\tif (!this._loaded || DomEvent.skipped(e)) { return; }\r\n\r\n\t\tvar type = e.type;\r\n\r\n\t\tif (type === 'mousedown' || type === 'keypress' || type === 'keyup' || type === 'keydown') {\r\n\t\t\t// prevents outline when clicking on keyboard-focusable element\r\n\t\t\tDomUtil.preventOutline(e.target || e.srcElement);\r\n\t\t}\r\n\r\n\t\tthis._fireDOMEvent(e, type);\r\n\t},\r\n\r\n\t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n\t_fireDOMEvent: function (e, type, targets) {\r\n\r\n\t\tif (e.type === 'click') {\r\n\t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n\t\t\t// @event preclick: MouseEvent\r\n\t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n\t\t\t// want something to happen on click before any existing click\r\n\t\t\t// handlers start running).\r\n\t\t\tvar synth = Util.extend({}, e);\r\n\t\t\tsynth.type = 'preclick';\r\n\t\t\tthis._fireDOMEvent(synth, synth.type, targets);\r\n\t\t}\r\n\r\n\t\tif (e._stopped) { return; }\r\n\r\n\t\t// Find the layer the event is propagating from and its parents.\r\n\t\ttargets = (targets || []).concat(this._findEventTargets(e, type));\r\n\r\n\t\tif (!targets.length) { return; }\r\n\r\n\t\tvar target = targets[0];\r\n\t\tif (type === 'contextmenu' && target.listens(type, true)) {\r\n\t\t\tDomEvent.preventDefault(e);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\toriginalEvent: e\r\n\t\t};\r\n\r\n\t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n\t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n\t\t\tdata.containerPoint = isMarker ?\r\n\t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n\t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n\t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < targets.length; i++) {\r\n\t\t\ttargets[i].fire(type, data, true);\r\n\t\t\tif (data.originalEvent._stopped ||\r\n\t\t\t\t(targets[i].options.bubblingMouseEvents === false && Util.indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n\t\t}\r\n\t},\r\n\r\n\t_draggableMoved: function (obj) {\r\n\t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n\t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n\t},\r\n\r\n\t_clearHandlers: function () {\r\n\t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n\t\t\tthis._handlers[i].disable();\r\n\t\t}\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method whenReady(fn: Function, context?: Object): this\r\n\t// Runs the given function `fn` when the map gets initialized with\r\n\t// a view (center and zoom) and at least one layer, or immediately\r\n\t// if it's already initialized, optionally passing a function context.\r\n\twhenReady: function (callback, context) {\r\n\t\tif (this._loaded) {\r\n\t\t\tcallback.call(context || this, {target: this});\r\n\t\t} else {\r\n\t\t\tthis.on('load', callback, context);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t// private methods for getting map state\r\n\r\n\t_getMapPanePos: function () {\r\n\t\treturn DomUtil.getPosition(this._mapPane) || new Point(0, 0);\r\n\t},\r\n\r\n\t_moved: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\treturn pos && !pos.equals([0, 0]);\r\n\t},\r\n\r\n\t_getTopLeftPoint: function (center, zoom) {\r\n\t\tvar pixelOrigin = center && zoom !== undefined ?\r\n\t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n\t\t\tthis.getPixelOrigin();\r\n\t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t_getNewPixelOrigin: function (center, zoom) {\r\n\t\tvar viewHalf = this.getSize()._divideBy(2);\r\n\t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n\t},\r\n\r\n\t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n\t},\r\n\r\n\t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn toBounds([\r\n\t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n\t\t]);\r\n\t},\r\n\r\n\t// layer point of the current center\r\n\t_getCenterLayerPoint: function () {\r\n\t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n\t},\r\n\r\n\t// offset of the specified place to the current center in pixels\r\n\t_getCenterOffset: function (latlng) {\r\n\t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// adjust center for view to get inside bounds\r\n\t_limitCenter: function (center, zoom, bounds) {\r\n\r\n\t\tif (!bounds) { return center; }\r\n\r\n\t\tvar centerPoint = this.project(center, zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n\t\t    offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n\t\t// If offset is less than a pixel, ignore.\r\n\t\t// This prevents unstable projections from getting into\r\n\t\t// an infinite loop of tiny offsets.\r\n\t\tif (offset.round().equals([0, 0])) {\r\n\t\t\treturn center;\r\n\t\t}\r\n\r\n\t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n\t},\r\n\r\n\t// adjust offset for view to get inside bounds\r\n\t_limitOffset: function (offset, bounds) {\r\n\t\tif (!bounds) { return offset; }\r\n\r\n\t\tvar viewBounds = this.getPixelBounds(),\r\n\t\t    newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n\t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n\t},\r\n\r\n\t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n\t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n\t\tvar projectedMaxBounds = toBounds(\r\n\t\t        this.project(maxBounds.getNorthEast(), zoom),\r\n\t\t        this.project(maxBounds.getSouthWest(), zoom)\r\n\t\t    ),\r\n\t\t    minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n\t\t    maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n\t\t    dx = this._rebound(minOffset.x, -maxOffset.x),\r\n\t\t    dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n\t\treturn new Point(dx, dy);\r\n\t},\r\n\r\n\t_rebound: function (left, right) {\r\n\t\treturn left + right > 0 ?\r\n\t\t\tMath.round(left - right) / 2 :\r\n\t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n\t},\r\n\r\n\t_limitZoom: function (zoom) {\r\n\t\tvar min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    snap = Browser.any3d ? this.options.zoomSnap : 1;\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / snap) * snap;\r\n\t\t}\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t_onPanTransitionStep: function () {\r\n\t\tthis.fire('move');\r\n\t},\r\n\r\n\t_onPanTransitionEnd: function () {\r\n\t\tDomUtil.removeClass(this._mapPane, 'leaflet-pan-anim');\r\n\t\tthis.fire('moveend');\r\n\t},\r\n\r\n\t_tryAnimatedPan: function (center, options) {\r\n\t\t// difference between the new and current centers in pixels\r\n\t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n\t\t// don't animate too far unless animate: true specified in options\r\n\t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tthis.panBy(offset, options);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_createAnimProxy: function () {\r\n\r\n\t\tvar proxy = this._proxy = DomUtil.create('div', 'leaflet-proxy leaflet-zoom-animated');\r\n\t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n\t\tthis.on('zoomanim', function (e) {\r\n\t\t\tvar prop = DomUtil.TRANSFORM,\r\n\t\t\t    transform = this._proxy.style[prop];\r\n\r\n\t\t\tDomUtil.setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n\t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n\t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n\t\t\t\tthis._onZoomTransitionEnd();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n\t\tthis._on('unload', this._destroyAnimProxy, this);\r\n\t},\r\n\r\n\t_destroyAnimProxy: function () {\r\n\t\tDomUtil.remove(this._proxy);\r\n\t\tthis.off('load moveend', this._animMoveEnd, this);\r\n\t\tdelete this._proxy;\r\n\t},\r\n\r\n\t_animMoveEnd: function () {\r\n\t\tvar c = this.getCenter(),\r\n\t\t    z = this.getZoom();\r\n\t\tDomUtil.setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n\t},\r\n\r\n\t_catchTransitionEnd: function (e) {\r\n\t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n\t\t\tthis._onZoomTransitionEnd();\r\n\t\t}\r\n\t},\r\n\r\n\t_nothingToAnimate: function () {\r\n\t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n\t},\r\n\r\n\t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n\t\tif (this._animatingZoom) { return true; }\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\t// don't animate if disabled, not supported or zoom difference is too large\r\n\t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n\t\t        Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n\t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n\t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tUtil.requestAnimFrame(function () {\r\n\t\t\tthis\r\n\t\t\t    ._moveStart(true, false)\r\n\t\t\t    ._animateZoom(center, zoom, true);\r\n\t\t}, this);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n\t\tif (!this._mapPane) { return; }\r\n\r\n\t\tif (startAnim) {\r\n\t\t\tthis._animatingZoom = true;\r\n\r\n\t\t\t// remember what center/zoom to set after animation\r\n\t\t\tthis._animateToCenter = center;\r\n\t\t\tthis._animateToZoom = zoom;\r\n\r\n\t\t\tDomUtil.addClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\t// @section Other Events\r\n\t\t// @event zoomanim: ZoomAnimEvent\r\n\t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n\t\tthis.fire('zoomanim', {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom,\r\n\t\t\tnoUpdate: noUpdate\r\n\t\t});\r\n\r\n\t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n\t\tsetTimeout(Util.bind(this._onZoomTransitionEnd, this), 250);\r\n\t},\r\n\r\n\t_onZoomTransitionEnd: function () {\r\n\t\tif (!this._animatingZoom) { return; }\r\n\r\n\t\tif (this._mapPane) {\r\n\t\t\tDomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\tthis._animatingZoom = false;\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom);\r\n\r\n\t\t// This anim frame should prevent an obscure iOS webkit tile loading race condition.\r\n\t\tUtil.requestAnimFrame(function () {\r\n\t\t\tthis._moveEnd(true);\r\n\t\t}, this);\r\n\t}\r\n});\r\n\r\n// @section\r\n\r\n// @factory L.map(id: String, options?: Map options)\r\n// Instantiates a map object given the DOM ID of a `<div>` element\r\n// and optionally an object literal with `Map options`.\r\n//\r\n// @alternative\r\n// @factory L.map(el: HTMLElement, options?: Map options)\r\n// Instantiates a map object given an instance of a `<div>` HTML element\r\n// and optionally an object literal with `Map options`.\r\nexport function createMap(id, options) {\r\n\treturn new Map(id, options);\r\n}\r\n","\r\nimport {Class} from '../core/Class';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control\r\n * @aka L.Control\r\n * @inherits Class\r\n *\r\n * L.Control is a base class for implementing map controls. Handles positioning.\r\n * All other controls extend from this class.\r\n */\r\n\r\nexport var Control = Class.extend({\r\n\t// @section\r\n\t// @aka Control options\r\n\toptions: {\r\n\t\t// @option position: String = 'topright'\r\n\t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n\t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n\t\tposition: 'topright'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\t/* @section\r\n\t * Classes extending L.Control will inherit the following methods:\r\n\t *\r\n\t * @method getPosition: string\r\n\t * Returns the position of the control.\r\n\t */\r\n\tgetPosition: function () {\r\n\t\treturn this.options.position;\r\n\t},\r\n\r\n\t// @method setPosition(position: string): this\r\n\t// Sets the position of the control.\r\n\tsetPosition: function (position) {\r\n\t\tvar map = this._map;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.removeControl(this);\r\n\t\t}\r\n\r\n\t\tthis.options.position = position;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.addControl(this);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTMLElement that contains the control.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method addTo(map: Map): this\r\n\t// Adds the control to the given map.\r\n\taddTo: function (map) {\r\n\t\tthis.remove();\r\n\t\tthis._map = map;\r\n\r\n\t\tvar container = this._container = this.onAdd(map),\r\n\t\t    pos = this.getPosition(),\r\n\t\t    corner = map._controlCorners[pos];\r\n\r\n\t\tDomUtil.addClass(container, 'leaflet-control');\r\n\r\n\t\tif (pos.indexOf('bottom') !== -1) {\r\n\t\t\tcorner.insertBefore(container, corner.firstChild);\r\n\t\t} else {\r\n\t\t\tcorner.appendChild(container);\r\n\t\t}\r\n\r\n\t\tthis._map.on('unload', this.remove, this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove: this\r\n\t// Removes the control from the map it is currently active on.\r\n\tremove: function () {\r\n\t\tif (!this._map) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._container);\r\n\r\n\t\tif (this.onRemove) {\r\n\t\t\tthis.onRemove(this._map);\r\n\t\t}\r\n\r\n\t\tthis._map.off('unload', this.remove, this);\r\n\t\tthis._map = null;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_refocusOnMap: function (e) {\r\n\t\t// if map exists and event is not a keyboard event\r\n\t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n\t\t\tthis._map.getContainer().focus();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport var control = function (options) {\r\n\treturn new Control(options);\r\n};\r\n\r\n/* @section Extension methods\r\n * @uninheritable\r\n *\r\n * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n *\r\n * @method onAdd(map: Map): HTMLElement\r\n * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n *\r\n * @method onRemove(map: Map)\r\n * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n */\r\n\r\n/* @namespace Map\r\n * @section Methods for Layers and Controls\r\n */\r\nMap.include({\r\n\t// @method addControl(control: Control): this\r\n\t// Adds the given control to the map\r\n\taddControl: function (control) {\r\n\t\tcontrol.addTo(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeControl(control: Control): this\r\n\t// Removes the given control from the map\r\n\tremoveControl: function (control) {\r\n\t\tcontrol.remove();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initControlPos: function () {\r\n\t\tvar corners = this._controlCorners = {},\r\n\t\t    l = 'leaflet-',\r\n\t\t    container = this._controlContainer =\r\n\t\t            DomUtil.create('div', l + 'control-container', this._container);\r\n\r\n\t\tfunction createCorner(vSide, hSide) {\r\n\t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n\t\t\tcorners[vSide + hSide] = DomUtil.create('div', className, container);\r\n\t\t}\r\n\r\n\t\tcreateCorner('top', 'left');\r\n\t\tcreateCorner('top', 'right');\r\n\t\tcreateCorner('bottom', 'left');\r\n\t\tcreateCorner('bottom', 'right');\r\n\t},\r\n\r\n\t_clearControlPos: function () {\r\n\t\tfor (var i in this._controlCorners) {\r\n\t\t\tDomUtil.remove(this._controlCorners[i]);\r\n\t\t}\r\n\t\tDomUtil.remove(this._controlContainer);\r\n\t\tdelete this._controlCorners;\r\n\t\tdelete this._controlContainer;\r\n\t}\r\n});\r\n","\r\nimport {Control} from './Control';\r\nimport * as Util from '../core/Util';\r\nimport * as Browser from '../core/Browser';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control.Layers\r\n * @aka L.Control.Layers\r\n * @inherits Control\r\n *\r\n * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](http://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var baseLayers = {\r\n * \t\"Mapbox\": mapbox,\r\n * \t\"OpenStreetMap\": osm\r\n * };\r\n *\r\n * var overlays = {\r\n * \t\"Marker\": marker,\r\n * \t\"Roads\": roadsLayer\r\n * };\r\n *\r\n * L.control.layers(baseLayers, overlays).addTo(map);\r\n * ```\r\n *\r\n * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n *\r\n * ```js\r\n * {\r\n *     \"<someName1>\": layer1,\r\n *     \"<someName2>\": layer2\r\n * }\r\n * ```\r\n *\r\n * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n *\r\n * ```js\r\n * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n * ```\r\n */\r\n\r\nexport var Layers = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Layers options\r\n\toptions: {\r\n\t\t// @option collapsed: Boolean = true\r\n\t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover or touch.\r\n\t\tcollapsed: true,\r\n\t\tposition: 'topright',\r\n\r\n\t\t// @option autoZIndex: Boolean = true\r\n\t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n\t\tautoZIndex: true,\r\n\r\n\t\t// @option hideSingleBase: Boolean = false\r\n\t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n\t\thideSingleBase: false,\r\n\r\n\t\t// @option sortLayers: Boolean = false\r\n\t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n\t\t// in which they were added to the control.\r\n\t\tsortLayers: false,\r\n\r\n\t\t// @option sortFunction: Function = *\r\n\t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n\t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n\t\t// The function receives both the `L.Layer` instances and their names, as in\r\n\t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n\t\t// By default, it sorts layers alphabetically by their name.\r\n\t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n\t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n\t\t}\r\n\t},\r\n\r\n\tinitialize: function (baseLayers, overlays, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tthis._layers = [];\r\n\t\tthis._lastZIndex = 0;\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tfor (var i in baseLayers) {\r\n\t\t\tthis._addLayer(baseLayers[i], i);\r\n\t\t}\r\n\r\n\t\tfor (i in overlays) {\r\n\t\t\tthis._addLayer(overlays[i], i, true);\r\n\t\t}\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._initLayout();\r\n\t\tthis._update();\r\n\r\n\t\tthis._map = map;\r\n\t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\taddTo: function (map) {\r\n\t\tControl.prototype.addTo.call(this, map);\r\n\t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n\t\treturn this._expandIfNotCollapsed();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addBaseLayer(layer: Layer, name: String): this\r\n\t// Adds a base layer (radio button entry) with the given name to the control.\r\n\taddBaseLayer: function (layer, name) {\r\n\t\tthis._addLayer(layer, name);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method addOverlay(layer: Layer, name: String): this\r\n\t// Adds an overlay (checkbox entry) with the given name to the control.\r\n\taddOverlay: function (layer, name) {\r\n\t\tthis._addLayer(layer, name, true);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Remove the given layer from the control.\r\n\tremoveLayer: function (layer) {\r\n\t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(layer));\r\n\t\tif (obj) {\r\n\t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n\t\t}\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method expand(): this\r\n\t// Expand the control container if collapsed.\r\n\texpand: function () {\r\n\t\tDomUtil.addClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\tthis._section.style.height = null;\r\n\t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n\t\tif (acceptableHeight < this._section.clientHeight) {\r\n\t\t\tDomUtil.addClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t}\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method collapse(): this\r\n\t// Collapse the control container if expanded.\r\n\tcollapse: function () {\r\n\t\tDomUtil.removeClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar className = 'leaflet-control-layers',\r\n\t\t    container = this._container = DomUtil.create('div', className),\r\n\t\t    collapsed = this.options.collapsed;\r\n\r\n\t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n\t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(container);\r\n\r\n\t\tvar section = this._section = DomUtil.create('section', className + '-list');\r\n\r\n\t\tif (collapsed) {\r\n\t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n\t\t\tif (!Browser.android) {\r\n\t\t\t\tDomEvent.on(container, {\r\n\t\t\t\t\tmouseenter: this.expand,\r\n\t\t\t\t\tmouseleave: this.collapse\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar link = this._layersLink = DomUtil.create('a', className + '-toggle', container);\r\n\t\tlink.href = '#';\r\n\t\tlink.title = 'Layers';\r\n\r\n\t\tif (Browser.touch) {\r\n\t\t\tDomEvent.on(link, 'click', DomEvent.stop);\r\n\t\t\tDomEvent.on(link, 'click', this.expand, this);\r\n\t\t} else {\r\n\t\t\tDomEvent.on(link, 'focus', this.expand, this);\r\n\t\t}\r\n\r\n\t\tif (!collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tthis._baseLayersList = DomUtil.create('div', className + '-base', section);\r\n\t\tthis._separator = DomUtil.create('div', className + '-separator', section);\r\n\t\tthis._overlaysList = DomUtil.create('div', className + '-overlays', section);\r\n\r\n\t\tcontainer.appendChild(section);\r\n\t},\r\n\r\n\t_getLayer: function (id) {\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n\t\t\tif (this._layers[i] && Util.stamp(this._layers[i].layer) === id) {\r\n\t\t\t\treturn this._layers[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_addLayer: function (layer, name, overlay) {\r\n\t\tif (this._map) {\r\n\t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\tthis._layers.push({\r\n\t\t\tlayer: layer,\r\n\t\t\tname: name,\r\n\t\t\toverlay: overlay\r\n\t\t});\r\n\r\n\t\tif (this.options.sortLayers) {\r\n\t\t\tthis._layers.sort(Util.bind(function (a, b) {\r\n\t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n\t\t\tthis._lastZIndex++;\r\n\t\t\tlayer.setZIndex(this._lastZIndex);\r\n\t\t}\r\n\r\n\t\tthis._expandIfNotCollapsed();\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._container) { return this; }\r\n\r\n\t\tDomUtil.empty(this._baseLayersList);\r\n\t\tDomUtil.empty(this._overlaysList);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n\t\tfor (i = 0; i < this._layers.length; i++) {\r\n\t\t\tobj = this._layers[i];\r\n\t\t\tthis._addItem(obj);\r\n\t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n\t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n\t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n\t\t}\r\n\r\n\t\t// Hide base layers section if there's only one layer.\r\n\t\tif (this.options.hideSingleBase) {\r\n\t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n\t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n\t\t}\r\n\r\n\t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_onLayerChange: function (e) {\r\n\t\tif (!this._handlingClick) {\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\tvar obj = this._getLayer(Util.stamp(e.target));\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Layer events\r\n\t\t// @event baselayerchange: LayersControlEvent\r\n\t\t// Fired when the base layer is changed through the [layers control](#control-layers).\r\n\t\t// @event overlayadd: LayersControlEvent\r\n\t\t// Fired when an overlay is selected through the [layers control](#control-layers).\r\n\t\t// @event overlayremove: LayersControlEvent\r\n\t\t// Fired when an overlay is deselected through the [layers control](#control-layers).\r\n\t\t// @namespace Control.Layers\r\n\t\tvar type = obj.overlay ?\r\n\t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n\t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n\t\tif (type) {\r\n\t\t\tthis._map.fire(type, obj);\r\n\t\t}\r\n\t},\r\n\r\n\t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe)\r\n\t_createRadioElement: function (name, checked) {\r\n\r\n\t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n\t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n\t\tvar radioFragment = document.createElement('div');\r\n\t\tradioFragment.innerHTML = radioHtml;\r\n\r\n\t\treturn radioFragment.firstChild;\r\n\t},\r\n\r\n\t_addItem: function (obj) {\r\n\t\tvar label = document.createElement('label'),\r\n\t\t    checked = this._map.hasLayer(obj.layer),\r\n\t\t    input;\r\n\r\n\t\tif (obj.overlay) {\r\n\t\t\tinput = document.createElement('input');\r\n\t\t\tinput.type = 'checkbox';\r\n\t\t\tinput.className = 'leaflet-control-layers-selector';\r\n\t\t\tinput.defaultChecked = checked;\r\n\t\t} else {\r\n\t\t\tinput = this._createRadioElement('leaflet-base-layers_' + Util.stamp(this), checked);\r\n\t\t}\r\n\r\n\t\tthis._layerControlInputs.push(input);\r\n\t\tinput.layerId = Util.stamp(obj.layer);\r\n\r\n\t\tDomEvent.on(input, 'click', this._onInputClick, this);\r\n\r\n\t\tvar name = document.createElement('span');\r\n\t\tname.innerHTML = ' ' + obj.name;\r\n\r\n\t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n\t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n\t\tvar holder = document.createElement('div');\r\n\r\n\t\tlabel.appendChild(holder);\r\n\t\tholder.appendChild(input);\r\n\t\tholder.appendChild(name);\r\n\r\n\t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n\t\tcontainer.appendChild(label);\r\n\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn label;\r\n\t},\r\n\r\n\t_onInputClick: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input, layer;\r\n\t\tvar addedLayers = [],\r\n\t\t    removedLayers = [];\r\n\r\n\t\tthis._handlingClick = true;\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n\t\t\tif (input.checked) {\r\n\t\t\t\taddedLayers.push(layer);\r\n\t\t\t} else if (!input.checked) {\r\n\t\t\t\tremovedLayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n\t\tfor (i = 0; i < removedLayers.length; i++) {\r\n\t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n\t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (i = 0; i < addedLayers.length; i++) {\r\n\t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n\t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tthis._refocusOnMap();\r\n\t},\r\n\r\n\t_checkDisabledLayers: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input,\r\n\t\t    layer,\r\n\t\t    zoom = this._map.getZoom();\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n\t\t\t                 (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n\t\t}\r\n\t},\r\n\r\n\t_expandIfNotCollapsed: function () {\r\n\t\tif (this._map && !this.options.collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_expand: function () {\r\n\t\t// Backward compatibility, remove me in 1.1.\r\n\t\treturn this.expand();\r\n\t},\r\n\r\n\t_collapse: function () {\r\n\t\t// Backward compatibility, remove me in 1.1.\r\n\t\treturn this.collapse();\r\n\t}\r\n\r\n});\r\n\r\n\r\n// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\nexport var layers = function (baseLayers, overlays, options) {\r\n\treturn new Layers(baseLayers, overlays, options);\r\n};\r\n","\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as DomEvent from '../dom/DomEvent';\r\n\r\n/*\r\n * @class Control.Zoom\r\n * @aka L.Control.Zoom\r\n * @inherits Control\r\n *\r\n * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n */\r\n\r\nexport var Zoom = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Zoom options\r\n\toptions: {\r\n\t\tposition: 'topleft',\r\n\r\n\t\t// @option zoomInText: String = '+'\r\n\t\t// The text set on the 'zoom in' button.\r\n\t\tzoomInText: '+',\r\n\r\n\t\t// @option zoomInTitle: String = 'Zoom in'\r\n\t\t// The title set on the 'zoom in' button.\r\n\t\tzoomInTitle: 'Zoom in',\r\n\r\n\t\t// @option zoomOutText: String = '&#x2212;'\r\n\t\t// The text set on the 'zoom out' button.\r\n\t\tzoomOutText: '&#x2212;',\r\n\r\n\t\t// @option zoomOutTitle: String = 'Zoom out'\r\n\t\t// The title set on the 'zoom out' button.\r\n\t\tzoomOutTitle: 'Zoom out'\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tvar zoomName = 'leaflet-control-zoom',\r\n\t\t    container = DomUtil.create('div', zoomName + ' leaflet-bar'),\r\n\t\t    options = this.options;\r\n\r\n\t\tthis._zoomInButton  = this._createButton(options.zoomInText, options.zoomInTitle,\r\n\t\t        zoomName + '-in',  container, this._zoomIn);\r\n\t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n\t\t        zoomName + '-out', container, this._zoomOut);\r\n\r\n\t\tthis._updateDisabled();\r\n\t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\t},\r\n\r\n\tdisable: function () {\r\n\t\tthis._disabled = true;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tenable: function () {\r\n\t\tthis._disabled = false;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_zoomIn: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n\t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_zoomOut: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n\t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_createButton: function (html, title, className, container, fn) {\r\n\t\tvar link = DomUtil.create('a', className, container);\r\n\t\tlink.innerHTML = html;\r\n\t\tlink.href = '#';\r\n\t\tlink.title = title;\r\n\r\n\t\t/*\r\n\t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n\t\t */\r\n\t\tlink.setAttribute('role', 'button');\r\n\t\tlink.setAttribute('aria-label', title);\r\n\r\n\t\tDomEvent.disableClickPropagation(link);\r\n\t\tDomEvent.on(link, 'click', DomEvent.stop);\r\n\t\tDomEvent.on(link, 'click', fn, this);\r\n\t\tDomEvent.on(link, 'click', this._refocusOnMap, this);\r\n\r\n\t\treturn link;\r\n\t},\r\n\r\n\t_updateDisabled: function () {\r\n\t\tvar map = this._map,\r\n\t\t    className = 'leaflet-disabled';\r\n\r\n\t\tDomUtil.removeClass(this._zoomInButton, className);\r\n\t\tDomUtil.removeClass(this._zoomOutButton, className);\r\n\r\n\t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomOutButton, className);\r\n\t\t}\r\n\t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n\t\t\tDomUtil.addClass(this._zoomInButton, className);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option zoomControl: Boolean = true\r\n// Whether a [zoom control](#control-zoom) is added to the map by default.\r\nMap.mergeOptions({\r\n\tzoomControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.zoomControl) {\r\n\t\t// @section Controls\r\n\t\t// @property zoomControl: Control.Zoom\r\n\t\t// The default zoom control (only available if the\r\n\t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n\t\tthis.zoomControl = new Zoom();\r\n\t\tthis.addControl(this.zoomControl);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Zoom\r\n// @factory L.control.zoom(options: Control.Zoom options)\r\n// Creates a zoom control\r\nexport var zoom = function (options) {\r\n\treturn new Zoom(options);\r\n};\r\n","\nimport {Control} from './Control';\nimport * as DomUtil from '../dom/DomUtil';\n\n/*\n * @class Control.Scale\n * @aka L.Control.Scale\n * @inherits Control\n *\n * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n *\n * @example\n *\n * ```js\n * L.control.scale().addTo(map);\n * ```\n */\n\nexport var Scale = Control.extend({\n\t// @section\n\t// @aka Control.Scale options\n\toptions: {\n\t\tposition: 'bottomleft',\n\n\t\t// @option maxWidth: Number = 100\n\t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n\t\tmaxWidth: 100,\n\n\t\t// @option metric: Boolean = True\n\t\t// Whether to show the metric scale line (m/km).\n\t\tmetric: true,\n\n\t\t// @option imperial: Boolean = True\n\t\t// Whether to show the imperial scale line (mi/ft).\n\t\timperial: true\n\n\t\t// @option updateWhenIdle: Boolean = false\n\t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n\t},\n\n\tonAdd: function (map) {\n\t\tvar className = 'leaflet-control-scale',\n\t\t    container = DomUtil.create('div', className),\n\t\t    options = this.options;\n\n\t\tthis._addScales(options, className + '-line', container);\n\n\t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t\tmap.whenReady(this._update, this);\n\n\t\treturn container;\n\t},\n\n\tonRemove: function (map) {\n\t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t},\n\n\t_addScales: function (options, className, container) {\n\t\tif (options.metric) {\n\t\t\tthis._mScale = DomUtil.create('div', className, container);\n\t\t}\n\t\tif (options.imperial) {\n\t\t\tthis._iScale = DomUtil.create('div', className, container);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tvar map = this._map,\n\t\t    y = map.getSize().y / 2;\n\n\t\tvar maxMeters = map.distance(\n\t\t\tmap.containerPointToLatLng([0, y]),\n\t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n\t\tthis._updateScales(maxMeters);\n\t},\n\n\t_updateScales: function (maxMeters) {\n\t\tif (this.options.metric && maxMeters) {\n\t\t\tthis._updateMetric(maxMeters);\n\t\t}\n\t\tif (this.options.imperial && maxMeters) {\n\t\t\tthis._updateImperial(maxMeters);\n\t\t}\n\t},\n\n\t_updateMetric: function (maxMeters) {\n\t\tvar meters = this._getRoundNum(maxMeters),\n\t\t    label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n\t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n\t},\n\n\t_updateImperial: function (maxMeters) {\n\t\tvar maxFeet = maxMeters * 3.2808399,\n\t\t    maxMiles, miles, feet;\n\n\t\tif (maxFeet > 5280) {\n\t\t\tmaxMiles = maxFeet / 5280;\n\t\t\tmiles = this._getRoundNum(maxMiles);\n\t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n\t\t} else {\n\t\t\tfeet = this._getRoundNum(maxFeet);\n\t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n\t\t}\n\t},\n\n\t_updateScale: function (scale, text, ratio) {\n\t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n\t\tscale.innerHTML = text;\n\t},\n\n\t_getRoundNum: function (num) {\n\t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n\t\t    d = num / pow10;\n\n\t\td = d >= 10 ? 10 :\n\t\t    d >= 5 ? 5 :\n\t\t    d >= 3 ? 3 :\n\t\t    d >= 2 ? 2 : 1;\n\n\t\treturn pow10 * d;\n\t}\n});\n\n\n// @factory L.control.scale(options?: Control.Scale options)\n// Creates an scale control with the given options.\nexport var scale = function (options) {\n\treturn new Scale(options);\n};\n","\r\nimport {Control} from './Control';\r\nimport {Map} from '../map/Map';\r\nimport * as Util from '../core/Util';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class Control.Attribution\r\n * @aka L.Control.Attribution\r\n * @inherits Control\r\n *\r\n * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n */\r\n\r\nexport var Attribution = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Attribution options\r\n\toptions: {\r\n\t\tposition: 'bottomright',\r\n\r\n\t\t// @option prefix: String = 'Leaflet'\r\n\t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JS library for interactive maps\">Leaflet</a>'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._attributions = {};\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tmap.attributionControl = this;\r\n\t\tthis._container = DomUtil.create('div', 'leaflet-control-attribution');\r\n\t\tDomEvent.disableClickPropagation(this._container);\r\n\r\n\t\t// TODO ugly, refactor\r\n\t\tfor (var i in map._layers) {\r\n\t\t\tif (map._layers[i].getAttribution) {\r\n\t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method setPrefix(prefix: String): this\r\n\t// Sets the text before the attributions.\r\n\tsetPrefix: function (prefix) {\r\n\t\tthis.options.prefix = prefix;\r\n\t\tthis._update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addAttribution(text: String): this\r\n\t// Adds an attribution text (e.g. `'Vector data &copy; Mapbox'`).\r\n\taddAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (!this._attributions[text]) {\r\n\t\t\tthis._attributions[text] = 0;\r\n\t\t}\r\n\t\tthis._attributions[text]++;\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeAttribution(text: String): this\r\n\t// Removes an attribution text.\r\n\tremoveAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (this._attributions[text]) {\r\n\t\t\tthis._attributions[text]--;\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar attribs = [];\r\n\r\n\t\tfor (var i in this._attributions) {\r\n\t\t\tif (this._attributions[i]) {\r\n\t\t\t\tattribs.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar prefixAndAttribs = [];\r\n\r\n\t\tif (this.options.prefix) {\r\n\t\t\tprefixAndAttribs.push(this.options.prefix);\r\n\t\t}\r\n\t\tif (attribs.length) {\r\n\t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n\t\t}\r\n\r\n\t\tthis._container.innerHTML = prefixAndAttribs.join(' | ');\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option attributionControl: Boolean = true\r\n// Whether a [attribution control](#control-attribution) is added to the map by default.\r\nMap.mergeOptions({\r\n\tattributionControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.attributionControl) {\r\n\t\tnew Attribution().addTo(this);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Attribution\r\n// @factory L.control.attribution(options: Control.Attribution options)\r\n// Creates an attribution control.\r\nexport var attribution = function (options) {\r\n\treturn new Attribution(options);\r\n};\r\n","import {Control, control} from './Control';\nimport {Layers, layers} from './Control.Layers';\nimport {Zoom, zoom} from './Control.Zoom';\nimport {Scale, scale} from './Control.Scale';\nimport {Attribution, attribution} from './Control.Attribution';\n\nControl.Layers = Layers;\nControl.Zoom = Zoom;\nControl.Scale = Scale;\nControl.Attribution = Attribution;\n\ncontrol.layers = layers;\ncontrol.zoom = zoom;\ncontrol.scale = scale;\ncontrol.attribution = attribution;\n\nexport {Control, control};\n","import {Class} from './Class';\n\n/*\n\tL.Handler is a base class for handler classes that are used internally to inject\n\tinteraction features like dragging to classes like Map and Marker.\n*/\n\n// @class Handler\n// @aka L.Handler\n// Abstract class for map interaction handlers\n\nexport var Handler = Class.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t},\n\n\t// @method enable(): this\n\t// Enables the handler\n\tenable: function () {\n\t\tif (this._enabled) { return this; }\n\n\t\tthis._enabled = true;\n\t\tthis.addHooks();\n\t\treturn this;\n\t},\n\n\t// @method disable(): this\n\t// Disables the handler\n\tdisable: function () {\n\t\tif (!this._enabled) { return this; }\n\n\t\tthis._enabled = false;\n\t\tthis.removeHooks();\n\t\treturn this;\n\t},\n\n\t// @method enabled(): Boolean\n\t// Returns `true` if the handler is enabled\n\tenabled: function () {\n\t\treturn !!this._enabled;\n\t}\n\n\t// @section Extension methods\n\t// Classes inheriting from `Handler` must implement the two following methods:\n\t// @method addHooks()\n\t// Called when the handler is enabled, should add event hooks.\n\t// @method removeHooks()\n\t// Called when the handler is disabled, should remove the event hooks added previously.\n});\n\n// @section There is static function which can be called without instantiating L.Handler:\n// @function addTo(map: Map, name: String): this\n// Adds a new Handler to the given map with the given name.\nHandler.addTo = function (map, name) {\n\tmap.addHandler(name, this);\n\treturn this;\n};\n","import * as Browser from './Browser';\nexport {Browser};\n\nexport {Class} from './Class';\n\nimport {Evented} from './Events';\nimport {Events} from './Events';\nexport {Evented};\nexport var Mixin = {Events: Events};\n\nexport {Handler} from './Handler';\n\nimport * as Util from './Util';\nexport {Util};\nexport {extend, bind, stamp, setOptions} from './Util';\n","import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n\r\n/*\r\n * @namespace LineUtil\r\n *\r\n * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n */\r\n\r\n// Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n// Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n// @function simplify(points: Point[], tolerance: Number): Point[]\r\n// Dramatically reduces the number of points in a polyline while retaining\r\n// its shape and returns a new array of simplified points, using the\r\n// [Douglas-Peucker algorithm](http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm).\r\n// Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n// each zoom level and also reducing visual noise. tolerance affects the amount of\r\n// simplification (lesser value means higher quality but slower and with more points).\r\n// Also released as a separated micro-library [Simplify.js](http://mourner.github.com/simplify-js/).\r\nexport function simplify(points, tolerance) {\r\n\tif (!tolerance || !points.length) {\r\n\t\treturn points.slice();\r\n\t}\r\n\r\n\tvar sqTolerance = tolerance * tolerance;\r\n\r\n\t    // stage 1: vertex reduction\r\n\t    points = _reducePoints(points, sqTolerance);\r\n\r\n\t    // stage 2: Douglas-Peucker simplification\r\n\t    points = _simplifyDP(points, sqTolerance);\r\n\r\n\treturn points;\r\n}\r\n\r\n// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n// Returns the distance between point `p` and segment `p1` to `p2`.\r\nexport function pointToSegmentDistance(p, p1, p2) {\r\n\treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n}\r\n\r\n// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n// Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\nexport function closestPointOnSegment(p, p1, p2) {\r\n\treturn _sqClosestPointOnSegment(p, p1, p2);\r\n}\r\n\r\n// Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm\r\nfunction _simplifyDP(points, sqTolerance) {\r\n\r\n\tvar len = points.length,\r\n\t    ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n\t    markers = new ArrayConstructor(len);\r\n\r\n\t    markers[0] = markers[len - 1] = 1;\r\n\r\n\t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n\tvar i,\r\n\t    newPoints = [];\r\n\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tif (markers[i]) {\r\n\t\t\tnewPoints.push(points[i]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn newPoints;\r\n}\r\n\r\nfunction _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n\tvar maxSqDist = 0,\r\n\tindex, i, sqDist;\r\n\r\n\tfor (i = first + 1; i <= last - 1; i++) {\r\n\t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n\t\tif (sqDist > maxSqDist) {\r\n\t\t\tindex = i;\r\n\t\t\tmaxSqDist = sqDist;\r\n\t\t}\r\n\t}\r\n\r\n\tif (maxSqDist > sqTolerance) {\r\n\t\tmarkers[index] = 1;\r\n\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n\t}\r\n}\r\n\r\n// reduce points that are too close to each other to a single point\r\nfunction _reducePoints(points, sqTolerance) {\r\n\tvar reducedPoints = [points[0]];\r\n\r\n\tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n\t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n\t\t\treducedPoints.push(points[i]);\r\n\t\t\tprev = i;\r\n\t\t}\r\n\t}\r\n\tif (prev < len - 1) {\r\n\t\treducedPoints.push(points[len - 1]);\r\n\t}\r\n\treturn reducedPoints;\r\n}\r\n\r\nvar _lastCode;\r\n\r\n// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n// Clips the segment a to b by rectangular bounds with the\r\n// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n// (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n// points that are on the screen or near, increasing performance.\r\nexport function clipSegment(a, b, bounds, useLastCode, round) {\r\n\tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n\t    codeB = _getBitCode(b, bounds),\r\n\r\n\t    codeOut, p, newCode;\r\n\r\n\t    // save 2nd code to avoid calculating it on the next segment\r\n\t    _lastCode = codeB;\r\n\r\n\twhile (true) {\r\n\t\t// if a,b is inside the clip window (trivial accept)\r\n\t\tif (!(codeA | codeB)) {\r\n\t\t\treturn [a, b];\r\n\t\t}\r\n\r\n\t\t// if a,b is outside the clip window (trivial reject)\r\n\t\tif (codeA & codeB) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// other cases\r\n\t\tcodeOut = codeA || codeB;\r\n\t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n\t\tnewCode = _getBitCode(p, bounds);\r\n\r\n\t\tif (codeOut === codeA) {\r\n\t\t\ta = p;\r\n\t\t\tcodeA = newCode;\r\n\t\t} else {\r\n\t\t\tb = p;\r\n\t\t\tcodeB = newCode;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function _getEdgeIntersection(a, b, code, bounds, round) {\r\n\tvar dx = b.x - a.x,\r\n\t    dy = b.y - a.y,\r\n\t    min = bounds.min,\r\n\t    max = bounds.max,\r\n\t    x, y;\r\n\r\n\tif (code & 8) { // top\r\n\t\tx = a.x + dx * (max.y - a.y) / dy;\r\n\t\ty = max.y;\r\n\r\n\t} else if (code & 4) { // bottom\r\n\t\tx = a.x + dx * (min.y - a.y) / dy;\r\n\t\ty = min.y;\r\n\r\n\t} else if (code & 2) { // right\r\n\t\tx = max.x;\r\n\t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n\t} else if (code & 1) { // left\r\n\t\tx = min.x;\r\n\t\ty = a.y + dy * (min.x - a.x) / dx;\r\n\t}\r\n\r\n\treturn new Point(x, y, round);\r\n}\r\n\r\nexport function _getBitCode(p, bounds) {\r\n\tvar code = 0;\r\n\r\n\tif (p.x < bounds.min.x) { // left\r\n\t\tcode |= 1;\r\n\t} else if (p.x > bounds.max.x) { // right\r\n\t\tcode |= 2;\r\n\t}\r\n\r\n\tif (p.y < bounds.min.y) { // bottom\r\n\t\tcode |= 4;\r\n\t} else if (p.y > bounds.max.y) { // top\r\n\t\tcode |= 8;\r\n\t}\r\n\r\n\treturn code;\r\n}\r\n\r\n// square distance (to avoid unnecessary Math.sqrt calls)\r\nfunction _sqDist(p1, p2) {\r\n\tvar dx = p2.x - p1.x,\r\n\t    dy = p2.y - p1.y;\r\n\treturn dx * dx + dy * dy;\r\n}\r\n\r\n// return closest point on segment or distance to that point\r\nexport function _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n\tvar x = p1.x,\r\n\t    y = p1.y,\r\n\t    dx = p2.x - x,\r\n\t    dy = p2.y - y,\r\n\t    dot = dx * dx + dy * dy,\r\n\t    t;\r\n\r\n\tif (dot > 0) {\r\n\t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n\t\tif (t > 1) {\r\n\t\t\tx = p2.x;\r\n\t\t\ty = p2.y;\r\n\t\t} else if (t > 0) {\r\n\t\t\tx += dx * t;\r\n\t\t\ty += dy * t;\r\n\t\t}\r\n\t}\r\n\r\n\tdx = p.x - x;\r\n\tdy = p.y - y;\r\n\r\n\treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n}\r\n\r\n\r\n// @function isFlat(latlngs: LatLng[]): Boolean\r\n// Returns true if `latlngs` is a flat array, false is nested.\r\nexport function isFlat(latlngs) {\r\n\treturn !Util.isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n}\r\n\r\nexport function _flat(latlngs) {\r\n\tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n\treturn isFlat(latlngs);\r\n}\r\n","import {Evented} from '../core/Events';\r\nimport * as Browser from '../core/Browser';\r\nimport * as DomEvent from './DomEvent';\r\nimport * as DomUtil from './DomUtil';\r\nimport * as Util from '../core/Util';\r\nimport {Point} from '../geometry/Point';\r\n\r\n/*\r\n * @class Draggable\r\n * @aka L.Draggable\r\n * @inherits Evented\r\n *\r\n * A class for making DOM elements draggable (including touch support).\r\n * Used internally for map and marker dragging. Only works for elements\r\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n *\r\n * @example\r\n * ```js\r\n * var draggable = new L.Draggable(elementToDrag);\r\n * draggable.enable();\r\n * ```\r\n */\r\n\r\nvar START = Browser.touch ? 'touchstart mousedown' : 'mousedown';\r\nvar END = {\r\n\tmousedown: 'mouseup',\r\n\ttouchstart: 'touchend',\r\n\tpointerdown: 'touchend',\r\n\tMSPointerDown: 'touchend'\r\n};\r\nvar MOVE = {\r\n\tmousedown: 'mousemove',\r\n\ttouchstart: 'touchmove',\r\n\tpointerdown: 'touchmove',\r\n\tMSPointerDown: 'touchmove'\r\n};\r\n\r\n\r\nexport var Draggable = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section\r\n\t\t// @aka Draggable options\r\n\t\t// @option clickTolerance: Number = 3\r\n\t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n\t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n\t\tclickTolerance: 3\r\n\t},\r\n\r\n\t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n\t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n\tinitialize: function (element, dragStartTarget, preventOutline, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._dragStartTarget = dragStartTarget || element;\r\n\t\tthis._preventOutline = preventOutline;\r\n\t},\r\n\r\n\t// @method enable()\r\n\t// Enables the dragging ability\r\n\tenable: function () {\r\n\t\tif (this._enabled) { return; }\r\n\r\n\t\tDomEvent.on(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = true;\r\n\t},\r\n\r\n\t// @method disable()\r\n\t// Disables the dragging ability\r\n\tdisable: function () {\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\t// If we're currently dragging this draggable,\r\n\t\t// disabling it counts as first ending the drag.\r\n\t\tif (Draggable._dragging === this) {\r\n\t\t\tthis.finishDrag();\r\n\t\t}\r\n\r\n\t\tDomEvent.off(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = false;\r\n\t\tthis._moved = false;\r\n\t},\r\n\r\n\t_onDown: function (e) {\r\n\t\t// Ignore simulated events, since we handle both touch and\r\n\t\t// mouse explicitly; otherwise we risk getting duplicates of\r\n\t\t// touch events, see #4315.\r\n\t\t// Also ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (e._simulated || !this._enabled) { return; }\r\n\r\n\t\tthis._moved = false;\r\n\r\n\t\tif (DomUtil.hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n\t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n\t\tDraggable._dragging = this;  // Prevent dragging multiple objects at once.\r\n\r\n\t\tif (this._preventOutline) {\r\n\t\t\tDomUtil.preventOutline(this._element);\r\n\t\t}\r\n\r\n\t\tDomUtil.disableImageDrag();\r\n\t\tDomUtil.disableTextSelection();\r\n\r\n\t\tif (this._moving) { return; }\r\n\r\n\t\t// @event down: Event\r\n\t\t// Fired when a drag is about to start.\r\n\t\tthis.fire('down');\r\n\r\n\t\tvar first = e.touches ? e.touches[0] : e,\r\n\t\t    sizedParent = DomUtil.getSizedParentNode(this._element);\r\n\r\n\t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n\r\n\t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n\t\tthis._parentScale = DomUtil.getScale(sizedParent);\r\n\r\n\t\tDomEvent.on(document, MOVE[e.type], this._onMove, this);\r\n\t\tDomEvent.on(document, END[e.type], this._onUp, this);\r\n\t},\r\n\r\n\t_onMove: function (e) {\r\n\t\t// Ignore simulated events, since we handle both touch and\r\n\t\t// mouse explicitly; otherwise we risk getting duplicates of\r\n\t\t// touch events, see #4315.\r\n\t\t// Also ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (e._simulated || !this._enabled) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\tthis._moved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n\t\t    offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n\t\tif (!offset.x && !offset.y) { return; }\r\n\t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n\t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n\t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n\t\t// and we can use the cached value for the scale.\r\n\t\toffset.x /= this._parentScale.x;\r\n\t\toffset.y /= this._parentScale.y;\r\n\r\n\t\tDomEvent.preventDefault(e);\r\n\r\n\t\tif (!this._moved) {\r\n\t\t\t// @event dragstart: Event\r\n\t\t\t// Fired when a drag starts\r\n\t\t\tthis.fire('dragstart');\r\n\r\n\t\t\tthis._moved = true;\r\n\t\t\tthis._startPos = DomUtil.getPosition(this._element).subtract(offset);\r\n\r\n\t\t\tDomUtil.addClass(document.body, 'leaflet-dragging');\r\n\r\n\t\t\tthis._lastTarget = e.target || e.srcElement;\r\n\t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n\t\t\t// if necessary\r\n\t\t\tif (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {\r\n\t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n\t\t\t}\r\n\t\t\tDomUtil.addClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t}\r\n\r\n\t\tthis._newPos = this._startPos.add(offset);\r\n\t\tthis._moving = true;\r\n\r\n\t\tUtil.cancelAnimFrame(this._animRequest);\r\n\t\tthis._lastEvent = e;\r\n\t\tthis._animRequest = Util.requestAnimFrame(this._updatePosition, this, true);\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n\t\t// @event predrag: Event\r\n\t\t// Fired continuously during dragging *before* each corresponding\r\n\t\t// update of the element's position.\r\n\t\tthis.fire('predrag', e);\r\n\t\tDomUtil.setPosition(this._element, this._newPos);\r\n\r\n\t\t// @event drag: Event\r\n\t\t// Fired continuously during dragging.\r\n\t\tthis.fire('drag', e);\r\n\t},\r\n\r\n\t_onUp: function (e) {\r\n\t\t// Ignore simulated events, since we handle both touch and\r\n\t\t// mouse explicitly; otherwise we risk getting duplicates of\r\n\t\t// touch events, see #4315.\r\n\t\t// Also ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (e._simulated || !this._enabled) { return; }\r\n\t\tthis.finishDrag();\r\n\t},\r\n\r\n\tfinishDrag: function () {\r\n\t\tDomUtil.removeClass(document.body, 'leaflet-dragging');\r\n\r\n\t\tif (this._lastTarget) {\r\n\t\t\tDomUtil.removeClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t\tthis._lastTarget = null;\r\n\t\t}\r\n\r\n\t\tfor (var i in MOVE) {\r\n\t\t\tDomEvent.off(document, MOVE[i], this._onMove, this);\r\n\t\t\tDomEvent.off(document, END[i], this._onUp, this);\r\n\t\t}\r\n\r\n\t\tDomUtil.enableImageDrag();\r\n\t\tDomUtil.enableTextSelection();\r\n\r\n\t\tif (this._moved && this._moving) {\r\n\t\t\t// ensure drag is not fired after dragend\r\n\t\t\tUtil.cancelAnimFrame(this._animRequest);\r\n\r\n\t\t\t// @event dragend: DragEndEvent\r\n\t\t\t// Fired when the drag ends.\r\n\t\t\tthis.fire('dragend', {\r\n\t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._moving = false;\r\n\t\tDraggable._dragging = false;\r\n\t}\r\n\r\n});\r\n","import * as LineUtil from './LineUtil';\r\n\r\n/*\r\n * @namespace PolyUtil\r\n * Various utility functions for polygon geometries.\r\n */\r\n\r\n/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n * performance. Note that polygon points needs different algorithm for clipping\r\n * than polyline, so there's a separate method for it.\r\n */\r\nexport function clipPolygon(points, bounds, round) {\r\n\tvar clippedPoints,\r\n\t    edges = [1, 4, 2, 8],\r\n\t    i, j, k,\r\n\t    a, b,\r\n\t    len, edge, p;\r\n\r\n\tfor (i = 0, len = points.length; i < len; i++) {\r\n\t\tpoints[i]._code = LineUtil._getBitCode(points[i], bounds);\r\n\t}\r\n\r\n\t// for each edge (left, bottom, right, top)\r\n\tfor (k = 0; k < 4; k++) {\r\n\t\tedge = edges[k];\r\n\t\tclippedPoints = [];\r\n\r\n\t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n\t\t\ta = points[i];\r\n\t\t\tb = points[j];\r\n\r\n\t\t\t// if a is inside the clip window\r\n\t\t\tif (!(a._code & edge)) {\r\n\t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n\t\t\t\tif (b._code & edge) {\r\n\t\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\t\tclippedPoints.push(p);\r\n\t\t\t\t}\r\n\t\t\t\tclippedPoints.push(a);\r\n\r\n\t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n\t\t\t} else if (!(b._code & edge)) {\r\n\t\t\t\tp = LineUtil._getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\tp._code = LineUtil._getBitCode(p, bounds);\r\n\t\t\t\tclippedPoints.push(p);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpoints = clippedPoints;\r\n\t}\r\n\r\n\treturn points;\r\n}\r\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @section\r\n * Leaflet comes with a set of already defined Projections out of the box:\r\n *\r\n * @projection L.Projection.LonLat\r\n *\r\n * Equirectangular, or Plate Carree projection — the most simple projection,\r\n * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n * `EPSG:4326` and `Simple` CRS.\r\n */\r\n\r\nexport var LonLat = {\r\n\tproject: function (latlng) {\r\n\t\treturn new Point(latlng.lng, latlng.lat);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\treturn new LatLng(point.y, point.x);\r\n\t},\r\n\r\n\tbounds: new Bounds([-180, -90], [180, 90])\r\n};\r\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.Mercator\r\n *\r\n * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n */\r\n\r\nexport var Mercator = {\r\n\tR: 6378137,\r\n\tR_MINOR: 6356752.314245179,\r\n\r\n\tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    r = this.R,\r\n\t\t    y = latlng.lat * d,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    con = e * Math.sin(y);\r\n\r\n\t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n\t\treturn new Point(latlng.lng * d * r, y);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI,\r\n\t\t    r = this.R,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    ts = Math.exp(-point.y / r),\r\n\t\t    phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n\t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n\t\t\tcon = e * Math.sin(phi);\r\n\t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n\t\t\tphi += dphi;\r\n\t\t}\r\n\r\n\t\treturn new LatLng(phi * d, point.x * d / r);\r\n\t}\r\n};\r\n","import {Earth} from './CRS.Earth';\r\nimport {Mercator} from '../projection/Projection.Mercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3395\r\n *\r\n * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n */\r\nexport var EPSG3395 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3395',\r\n\tprojection: Mercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n","import {Earth} from './CRS.Earth';\r\nimport {LonLat} from '../projection/Projection.LonLat';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG4326\r\n *\r\n * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n *\r\n * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n * which is a breaking change from 0.7.x behaviour.  If you are using a `TileLayer`\r\n * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n */\r\n\r\nexport var EPSG4326 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:4326',\r\n\tprojection: LonLat,\r\n\ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n});\r\n","import {CRS} from './CRS';\nimport {LonLat} from '../projection/Projection.LonLat';\nimport {toTransformation} from '../../geometry/Transformation';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Simple\n *\n * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n * axis should still be inverted (going from bottom to top). `distance()` returns\n * simple euclidean distance.\n */\n\nexport var Simple = Util.extend({}, CRS, {\n\tprojection: LonLat,\n\ttransformation: toTransformation(1, 0, -1, 0),\n\n\tscale: function (zoom) {\n\t\treturn Math.pow(2, zoom);\n\t},\n\n\tzoom: function (scale) {\n\t\treturn Math.log(scale) / Math.LN2;\n\t},\n\n\tdistance: function (latlng1, latlng2) {\n\t\tvar dx = latlng2.lng - latlng1.lng,\n\t\t    dy = latlng2.lat - latlng1.lat;\n\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\n\tinfinite: true\n});\n","import {CRS} from './CRS';\nimport {Earth} from './CRS.Earth';\nimport {EPSG3395} from './CRS.EPSG3395';\nimport {EPSG3857, EPSG900913} from './CRS.EPSG3857';\nimport {EPSG4326} from './CRS.EPSG4326';\nimport {Simple} from './CRS.Simple';\n\nCRS.Earth = Earth;\nCRS.EPSG3395 = EPSG3395;\nCRS.EPSG3857 = EPSG3857;\nCRS.EPSG900913 = EPSG900913;\nCRS.EPSG4326 = EPSG4326;\nCRS.Simple = Simple;\n\nexport {CRS};\n","import {Evented} from '../core/Events';\nimport {Map} from '../map/Map';\nimport * as Util from '../core/Util';\n\n/*\n * @class Layer\n * @inherits Evented\n * @aka L.Layer\n * @aka ILayer\n *\n * A set of methods from the Layer base class that all Leaflet layers use.\n * Inherits all methods, options and events from `L.Evented`.\n *\n * @example\n *\n * ```js\n * var layer = L.marker(latlng).addTo(map);\n * layer.addTo(map);\n * layer.remove();\n * ```\n *\n * @event add: Event\n * Fired after the layer is added to a map\n *\n * @event remove: Event\n * Fired after the layer is removed from a map\n */\n\n\nexport var Layer = Evented.extend({\n\n\t// Classes extending `L.Layer` will inherit the following options:\n\toptions: {\n\t\t// @option pane: String = 'overlayPane'\n\t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n\t\tpane: 'overlayPane',\n\n\t\t// @option attribution: String = null\n\t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n\t\tattribution: null,\n\n\t\tbubblingMouseEvents: true\n\t},\n\n\t/* @section\n\t * Classes extending `L.Layer` will inherit the following methods:\n\t *\n\t * @method addTo(map: Map|LayerGroup): this\n\t * Adds the layer to the given map or layer group.\n\t */\n\taddTo: function (map) {\n\t\tmap.addLayer(this);\n\t\treturn this;\n\t},\n\n\t// @method remove: this\n\t// Removes the layer from the map it is currently active on.\n\tremove: function () {\n\t\treturn this.removeFrom(this._map || this._mapToAdd);\n\t},\n\n\t// @method removeFrom(map: Map): this\n\t// Removes the layer from the given map\n\t//\n\t// @alternative\n\t// @method removeFrom(group: LayerGroup): this\n\t// Removes the layer from the given `LayerGroup`\n\tremoveFrom: function (obj) {\n\t\tif (obj) {\n\t\t\tobj.removeLayer(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getPane(name? : String): HTMLElement\n\t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n\tgetPane: function (name) {\n\t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n\t},\n\n\taddInteractiveTarget: function (targetEl) {\n\t\tthis._map._targets[Util.stamp(targetEl)] = this;\n\t\treturn this;\n\t},\n\n\tremoveInteractiveTarget: function (targetEl) {\n\t\tdelete this._map._targets[Util.stamp(targetEl)];\n\t\treturn this;\n\t},\n\n\t// @method getAttribution: String\n\t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n\tgetAttribution: function () {\n\t\treturn this.options.attribution;\n\t},\n\n\t_layerAdd: function (e) {\n\t\tvar map = e.target;\n\n\t\t// check in case layer gets added and then removed before the map is ready\n\t\tif (!map.hasLayer(this)) { return; }\n\n\t\tthis._map = map;\n\t\tthis._zoomAnimated = map._zoomAnimated;\n\n\t\tif (this.getEvents) {\n\t\t\tvar events = this.getEvents();\n\t\t\tmap.on(events, this);\n\t\t\tthis.once('remove', function () {\n\t\t\t\tmap.off(events, this);\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.onAdd(map);\n\n\t\tif (this.getAttribution && map.attributionControl) {\n\t\t\tmap.attributionControl.addAttribution(this.getAttribution());\n\t\t}\n\n\t\tthis.fire('add');\n\t\tmap.fire('layeradd', {layer: this});\n\t}\n});\n\n/* @section Extension methods\n * @uninheritable\n *\n * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n *\n * @method onAdd(map: Map): this\n * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n *\n * @method onRemove(map: Map): this\n * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n *\n * @method getEvents(): Object\n * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n *\n * @method getAttribution(): String\n * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n *\n * @method beforeAdd(map: Map): this\n * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n */\n\n\n/* @namespace Map\n * @section Layer events\n *\n * @event layeradd: LayerEvent\n * Fired when a new layer is added to the map.\n *\n * @event layerremove: LayerEvent\n * Fired when some layer is removed from the map\n *\n * @section Methods for Layers and Controls\n */\nMap.include({\n\t// @method addLayer(layer: Layer): this\n\t// Adds the given layer to the map\n\taddLayer: function (layer) {\n\t\tif (!layer._layerAdd) {\n\t\t\tthrow new Error('The provided object is not a Layer.');\n\t\t}\n\n\t\tvar id = Util.stamp(layer);\n\t\tif (this._layers[id]) { return this; }\n\t\tthis._layers[id] = layer;\n\n\t\tlayer._mapToAdd = this;\n\n\t\tif (layer.beforeAdd) {\n\t\t\tlayer.beforeAdd(this);\n\t\t}\n\n\t\tthis.whenReady(layer._layerAdd, layer);\n\n\t\treturn this;\n\t},\n\n\t// @method removeLayer(layer: Layer): this\n\t// Removes the given layer from the map.\n\tremoveLayer: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (!this._layers[id]) { return this; }\n\n\t\tif (this._loaded) {\n\t\t\tlayer.onRemove(this);\n\t\t}\n\n\t\tif (layer.getAttribution && this.attributionControl) {\n\t\t\tthis.attributionControl.removeAttribution(layer.getAttribution());\n\t\t}\n\n\t\tdelete this._layers[id];\n\n\t\tif (this._loaded) {\n\t\t\tthis.fire('layerremove', {layer: layer});\n\t\t\tlayer.fire('remove');\n\t\t}\n\n\t\tlayer._map = layer._mapToAdd = null;\n\n\t\treturn this;\n\t},\n\n\t// @method hasLayer(layer: Layer): Boolean\n\t// Returns `true` if the given layer is currently added to the map\n\thasLayer: function (layer) {\n\t\treturn !!layer && (Util.stamp(layer) in this._layers);\n\t},\n\n\t/* @method eachLayer(fn: Function, context?: Object): this\n\t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n\t * ```\n\t * map.eachLayer(function(layer){\n\t *     layer.bindPopup('Hello');\n\t * });\n\t * ```\n\t */\n\teachLayer: function (method, context) {\n\t\tfor (var i in this._layers) {\n\t\t\tmethod.call(context, this._layers[i]);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_addLayers: function (layers) {\n\t\tlayers = layers ? (Util.isArray(layers) ? layers : [layers]) : [];\n\n\t\tfor (var i = 0, len = layers.length; i < len; i++) {\n\t\t\tthis.addLayer(layers[i]);\n\t\t}\n\t},\n\n\t_addZoomLimit: function (layer) {\n\t\tif (isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n\t\t\tthis._zoomBoundLayers[Util.stamp(layer)] = layer;\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_removeZoomLimit: function (layer) {\n\t\tvar id = Util.stamp(layer);\n\n\t\tif (this._zoomBoundLayers[id]) {\n\t\t\tdelete this._zoomBoundLayers[id];\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_updateZoomLevels: function () {\n\t\tvar minZoom = Infinity,\n\t\t    maxZoom = -Infinity,\n\t\t    oldZoomSpan = this._getZoomSpan();\n\n\t\tfor (var i in this._zoomBoundLayers) {\n\t\t\tvar options = this._zoomBoundLayers[i].options;\n\n\t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n\t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n\t\t}\n\n\t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n\t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n\t\t// @section Map state change events\n\t\t// @event zoomlevelschange: Event\n\t\t// Fired when the number of zoomlevels on the map is changed due\n\t\t// to adding or removing a layer.\n\t\tif (oldZoomSpan !== this._getZoomSpan()) {\n\t\t\tthis.fire('zoomlevelschange');\n\t\t}\n\n\t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n\t\t\tthis.setZoom(this._layersMaxZoom);\n\t\t}\n\t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n\t\t\tthis.setZoom(this._layersMinZoom);\n\t\t}\n\t}\n});\n","\r\nimport {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class LayerGroup\r\n * @aka L.LayerGroup\r\n * @inherits Layer\r\n *\r\n * Used to group several layers and handle them as one. If you add it to the map,\r\n * any layers added or removed from the group will be added/removed on the map as\r\n * well. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.layerGroup([marker1, marker2])\r\n * \t.addLayer(polyline)\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var LayerGroup = Layer.extend({\r\n\r\n\tinitialize: function (layers, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (layers) {\r\n\t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n\t\t\t\tthis.addLayer(layers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addLayer(layer: Layer): this\r\n\t// Adds the given layer to the group.\r\n\taddLayer: function (layer) {\r\n\t\tvar id = this.getLayerId(layer);\r\n\r\n\t\tthis._layers[id] = layer;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.addLayer(layer);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Removes the given layer from the group.\r\n\t// @alternative\r\n\t// @method removeLayer(id: Number): this\r\n\t// Removes the layer with the given internal ID from the group.\r\n\tremoveLayer: function (layer) {\r\n\t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n\t\tif (this._map && this._layers[id]) {\r\n\t\t\tthis._map.removeLayer(this._layers[id]);\r\n\t\t}\r\n\r\n\t\tdelete this._layers[id];\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method hasLayer(layer: Layer): Boolean\r\n\t// Returns `true` if the given layer is currently added to the group.\r\n\t// @alternative\r\n\t// @method hasLayer(id: Number): Boolean\r\n\t// Returns `true` if the given internal ID is currently added to the group.\r\n\thasLayer: function (layer) {\r\n\t\tif (!layer) { return false; }\r\n\t\tvar layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);\r\n\t\treturn layerId in this._layers;\r\n\t},\r\n\r\n\t// @method clearLayers(): this\r\n\t// Removes all the layers from the group.\r\n\tclearLayers: function () {\r\n\t\treturn this.eachLayer(this.removeLayer, this);\r\n\t},\r\n\r\n\t// @method invoke(methodName: String, …): this\r\n\t// Calls `methodName` on every layer contained in this group, passing any\r\n\t// additional parameters. Has no effect if the layers contained do not\r\n\t// implement `methodName`.\r\n\tinvoke: function (methodName) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n\t\t    i, layer;\r\n\r\n\t\tfor (i in this._layers) {\r\n\t\t\tlayer = this._layers[i];\r\n\r\n\t\t\tif (layer[methodName]) {\r\n\t\t\t\tlayer[methodName].apply(layer, args);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis.eachLayer(map.addLayer, map);\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tthis.eachLayer(map.removeLayer, map);\r\n\t},\r\n\r\n\t// @method eachLayer(fn: Function, context?: Object): this\r\n\t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n\t// ```js\r\n\t// group.eachLayer(function (layer) {\r\n\t// \tlayer.bindPopup('Hello');\r\n\t// });\r\n\t// ```\r\n\teachLayer: function (method, context) {\r\n\t\tfor (var i in this._layers) {\r\n\t\t\tmethod.call(context, this._layers[i]);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getLayer(id: Number): Layer\r\n\t// Returns the layer with the given internal ID.\r\n\tgetLayer: function (id) {\r\n\t\treturn this._layers[id];\r\n\t},\r\n\r\n\t// @method getLayers(): Layer[]\r\n\t// Returns an array of all the layers added to the group.\r\n\tgetLayers: function () {\r\n\t\tvar layers = [];\r\n\t\tthis.eachLayer(layers.push, layers);\r\n\t\treturn layers;\r\n\t},\r\n\r\n\t// @method setZIndex(zIndex: Number): this\r\n\t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n\tsetZIndex: function (zIndex) {\r\n\t\treturn this.invoke('setZIndex', zIndex);\r\n\t},\r\n\r\n\t// @method getLayerId(layer: Layer): Number\r\n\t// Returns the internal ID for a layer\r\n\tgetLayerId: function (layer) {\r\n\t\treturn Util.stamp(layer);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n// Create a layer group, optionally given an initial set of layers and an `options` object.\r\nexport var layerGroup = function (layers, options) {\r\n\treturn new LayerGroup(layers, options);\r\n};\r\n","import {LayerGroup} from './LayerGroup';\r\nimport {LatLngBounds} from '../geo/LatLngBounds';\r\n\r\n/*\r\n * @class FeatureGroup\r\n * @aka L.FeatureGroup\r\n * @inherits LayerGroup\r\n *\r\n * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n *  * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n *  * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n * handler, it will handle events from any of the layers. This includes mouse events\r\n * and custom events.\r\n *  * Has `layeradd` and `layerremove` events\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.featureGroup([marker1, marker2, polyline])\r\n * \t.bindPopup('Hello world!')\r\n * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nexport var FeatureGroup = LayerGroup.extend({\r\n\r\n\taddLayer: function (layer) {\r\n\t\tif (this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlayer.addEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n\t\t// @event layeradd: LayerEvent\r\n\t\t// Fired when a layer is added to this `FeatureGroup`\r\n\t\treturn this.fire('layeradd', {layer: layer});\r\n\t},\r\n\r\n\tremoveLayer: function (layer) {\r\n\t\tif (!this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif (layer in this._layers) {\r\n\t\t\tlayer = this._layers[layer];\r\n\t\t}\r\n\r\n\t\tlayer.removeEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n\t\t// @event layerremove: LayerEvent\r\n\t\t// Fired when a layer is removed from this `FeatureGroup`\r\n\t\treturn this.fire('layerremove', {layer: layer});\r\n\t},\r\n\r\n\t// @method setStyle(style: Path options): this\r\n\t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.invoke('setStyle', style);\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer group to the top of all other layers\r\n\tbringToFront: function () {\r\n\t\treturn this.invoke('bringToFront');\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer group to the back of all other layers\r\n\tbringToBack: function () {\r\n\t\treturn this.invoke('bringToBack');\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n\tgetBounds: function () {\r\n\t\tvar bounds = new LatLngBounds();\r\n\r\n\t\tfor (var id in this._layers) {\r\n\t\t\tvar layer = this._layers[id];\r\n\t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n\t\t}\r\n\t\treturn bounds;\r\n\t}\r\n});\r\n\r\n// @factory L.featureGroup(layers?: Layer[], options?: Object)\r\n// Create a feature group, optionally given an initial set of layers and an `options` object.\r\nexport var featureGroup = function (layers, options) {\r\n\treturn new FeatureGroup(layers, options);\r\n};\r\n","import {Class} from '../../core/Class';\r\nimport {setOptions} from '../../core/Util';\r\nimport {toPoint as point} from '../../geometry/Point';\r\nimport {retina} from '../../core/Browser';\r\n\r\n/*\r\n * @class Icon\r\n * @aka L.Icon\r\n *\r\n * Represents an icon to provide when creating a marker.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var myIcon = L.icon({\r\n *     iconUrl: 'my-icon.png',\r\n *     iconRetinaUrl: 'my-icon@2x.png',\r\n *     iconSize: [38, 95],\r\n *     iconAnchor: [22, 94],\r\n *     popupAnchor: [-3, -76],\r\n *     shadowUrl: 'my-icon-shadow.png',\r\n *     shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n *     shadowSize: [68, 95],\r\n *     shadowAnchor: [22, 94]\r\n * });\r\n *\r\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n * ```\r\n *\r\n * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n *\r\n */\r\n\r\nexport var Icon = Class.extend({\r\n\r\n\t/* @section\r\n\t * @aka Icon options\r\n\t *\r\n\t * @option iconUrl: String = null\r\n\t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n\t *\r\n\t * @option iconRetinaUrl: String = null\r\n\t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n\t * script path). Used for Retina screen devices.\r\n\t *\r\n\t * @option iconSize: Point = null\r\n\t * Size of the icon image in pixels.\r\n\t *\r\n\t * @option iconAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n\t * will be aligned so that this point is at the marker's geographical location. Centered\r\n\t * by default if size is specified, also can be set in CSS with negative margins.\r\n\t *\r\n\t * @option popupAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option tooltipAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option shadowUrl: String = null\r\n\t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n\t *\r\n\t * @option shadowRetinaUrl: String = null\r\n\t *\r\n\t * @option shadowSize: Point = null\r\n\t * Size of the shadow image in pixels.\r\n\t *\r\n\t * @option shadowAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n\t * as iconAnchor if not specified).\r\n\t *\r\n\t * @option className: String = ''\r\n\t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n\t */\r\n\r\n\toptions: {\r\n\t\tpopupAnchor: [0, 0],\r\n\t\ttooltipAnchor: [0, 0]\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n\t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n\t// styled according to the options.\r\n\tcreateIcon: function (oldIcon) {\r\n\t\treturn this._createIcon('icon', oldIcon);\r\n\t},\r\n\r\n\t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n\t// As `createIcon`, but for the shadow beneath it.\r\n\tcreateShadow: function (oldIcon) {\r\n\t\treturn this._createIcon('shadow', oldIcon);\r\n\t},\r\n\r\n\t_createIcon: function (name, oldIcon) {\r\n\t\tvar src = this._getIconUrl(name);\r\n\r\n\t\tif (!src) {\r\n\t\t\tif (name === 'icon') {\r\n\t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n\t\tthis._setIconStyles(img, name);\r\n\r\n\t\treturn img;\r\n\t},\r\n\r\n\t_setIconStyles: function (img, name) {\r\n\t\tvar options = this.options;\r\n\t\tvar sizeOption = options[name + 'Size'];\r\n\r\n\t\tif (typeof sizeOption === 'number') {\r\n\t\t\tsizeOption = [sizeOption, sizeOption];\r\n\t\t}\r\n\r\n\t\tvar size = point(sizeOption),\r\n\t\t    anchor = point(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n\t\t            size && size.divideBy(2, true));\r\n\r\n\t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n\t\tif (anchor) {\r\n\t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n\t\t\timg.style.marginTop  = (-anchor.y) + 'px';\r\n\t\t}\r\n\r\n\t\tif (size) {\r\n\t\t\timg.style.width  = size.x + 'px';\r\n\t\t\timg.style.height = size.y + 'px';\r\n\t\t}\r\n\t},\r\n\r\n\t_createImg: function (src, el) {\r\n\t\tel = el || document.createElement('img');\r\n\t\tel.src = src;\r\n\t\treturn el;\r\n\t},\r\n\r\n\t_getIconUrl: function (name) {\r\n\t\treturn retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.icon(options: Icon options)\r\n// Creates an icon instance with the given options.\r\nexport function icon(options) {\r\n\treturn new Icon(options);\r\n}\r\n","import {Icon} from './Icon';\nimport * as DomUtil from '../../dom/DomUtil';\n\n/*\n * @miniclass Icon.Default (Icon)\n * @aka L.Icon.Default\n * @section\n *\n * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n * no icon is specified. Points to the blue marker image distributed with Leaflet\n * releases.\n *\n * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n * (which is a set of `Icon options`).\n *\n * If you want to _completely_ replace the default icon, override the\n * `L.Marker.prototype.options.icon` with your own icon instead.\n */\n\nexport var IconDefault = Icon.extend({\n\n\toptions: {\n\t\ticonUrl:       'marker-icon.png',\n\t\ticonRetinaUrl: 'marker-icon-2x.png',\n\t\tshadowUrl:     'marker-shadow.png',\n\t\ticonSize:    [25, 41],\n\t\ticonAnchor:  [12, 41],\n\t\tpopupAnchor: [1, -34],\n\t\ttooltipAnchor: [16, -28],\n\t\tshadowSize:  [41, 41]\n\t},\n\n\t_getIconUrl: function (name) {\n\t\tif (!IconDefault.imagePath) {\t// Deprecated, backwards-compatibility only\n\t\t\tIconDefault.imagePath = this._detectIconPath();\n\t\t}\n\n\t\t// @option imagePath: String\n\t\t// `Icon.Default` will try to auto-detect the location of the\n\t\t// blue icon images. If you are placing these images in a non-standard\n\t\t// way, set this option to point to the right path.\n\t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n\t},\n\n\t_detectIconPath: function () {\n\t\tvar el = DomUtil.create('div',  'leaflet-default-icon-path', document.body);\n\t\tvar path = DomUtil.getStyle(el, 'background-image') ||\n\t\t           DomUtil.getStyle(el, 'backgroundImage');\t// IE8\n\n\t\tdocument.body.removeChild(el);\n\n\t\tif (path === null || path.indexOf('url') !== 0) {\n\t\t\tpath = '';\n\t\t} else {\n\t\t\tpath = path.replace(/^url\\([\"']?/, '').replace(/marker-icon\\.png[\"']?\\)$/, '');\n\t\t}\n\n\t\treturn path;\n\t}\n});\n","import {Handler} from '../../core/Handler';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Draggable} from '../../dom/Draggable';\nimport {toBounds} from '../../geometry/Bounds';\nimport {toPoint} from '../../geometry/Point';\nimport {requestAnimFrame, cancelAnimFrame} from '../../core/Util';\n\n/*\n * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n */\n\n\n/* @namespace Marker\n * @section Interaction handlers\n *\n * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n *\n * ```js\n * marker.dragging.disable();\n * ```\n *\n * @property dragging: Handler\n * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n */\n\nexport var MarkerDrag = Handler.extend({\n\tinitialize: function (marker) {\n\t\tthis._marker = marker;\n\t},\n\n\taddHooks: function () {\n\t\tvar icon = this._marker._icon;\n\n\t\tif (!this._draggable) {\n\t\t\tthis._draggable = new Draggable(icon, icon, true);\n\t\t}\n\n\t\tthis._draggable.on({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).enable();\n\n\t\tDomUtil.addClass(icon, 'leaflet-marker-draggable');\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._draggable.off({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).disable();\n\n\t\tif (this._marker._icon) {\n\t\t\tDomUtil.removeClass(this._marker._icon, 'leaflet-marker-draggable');\n\t\t}\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\t_adjustPan: function (e) {\n\t\tvar marker = this._marker,\n\t\t    map = marker._map,\n\t\t    speed = this._marker.options.autoPanSpeed,\n\t\t    padding = this._marker.options.autoPanPadding,\n\t\t    iconPos = DomUtil.getPosition(marker._icon),\n\t\t    bounds = map.getPixelBounds(),\n\t\t    origin = map.getPixelOrigin();\n\n\t\tvar panBounds = toBounds(\n\t\t\tbounds.min._subtract(origin).add(padding),\n\t\t\tbounds.max._subtract(origin).subtract(padding)\n\t\t);\n\n\t\tif (!panBounds.contains(iconPos)) {\n\t\t\t// Compute incremental movement\n\t\t\tvar movement = toPoint(\n\t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n\t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n\t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n\t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n\t\t\t).multiplyBy(speed);\n\n\t\t\tmap.panBy(movement, {animate: false});\n\n\t\t\tthis._draggable._newPos._add(movement);\n\t\t\tthis._draggable._startPos._add(movement);\n\n\t\t\tDomUtil.setPosition(marker._icon, this._draggable._newPos);\n\t\t\tthis._onDrag(e);\n\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDragStart: function () {\n\t\t// @section Dragging events\n\t\t// @event dragstart: Event\n\t\t// Fired when the user starts dragging the marker.\n\n\t\t// @event movestart: Event\n\t\t// Fired when the marker starts moving (because of dragging).\n\n\t\tthis._oldLatLng = this._marker.getLatLng();\n\n\t\t// When using ES6 imports it could not be set when `Popup` was not imported as well\n\t\tthis._marker.closePopup && this._marker.closePopup();\n\n\t\tthis._marker\n\t\t\t.fire('movestart')\n\t\t\t.fire('dragstart');\n\t},\n\n\t_onPreDrag: function (e) {\n\t\tif (this._marker.options.autoPan) {\n\t\t\tcancelAnimFrame(this._panRequest);\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tvar marker = this._marker,\n\t\t    shadow = marker._shadow,\n\t\t    iconPos = DomUtil.getPosition(marker._icon),\n\t\t    latlng = marker._map.layerPointToLatLng(iconPos);\n\n\t\t// update shadow position\n\t\tif (shadow) {\n\t\t\tDomUtil.setPosition(shadow, iconPos);\n\t\t}\n\n\t\tmarker._latlng = latlng;\n\t\te.latlng = latlng;\n\t\te.oldLatLng = this._oldLatLng;\n\n\t\t// @event drag: Event\n\t\t// Fired repeatedly while the user drags the marker.\n\t\tmarker\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_onDragEnd: function (e) {\n\t\t// @event dragend: DragEndEvent\n\t\t// Fired when the user stops dragging the marker.\n\n\t\t cancelAnimFrame(this._panRequest);\n\n\t\t// @event moveend: Event\n\t\t// Fired when the marker stops moving (because of dragging).\n\t\tdelete this._oldLatLng;\n\t\tthis._marker\n\t\t    .fire('moveend')\n\t\t    .fire('dragend', e);\n\t}\n});\n","import {Layer} from '../Layer';\r\nimport {IconDefault} from './Icon.Default';\r\nimport * as Util from '../../core/Util';\r\nimport {toLatLng as latLng} from '../../geo/LatLng';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\nimport {MarkerDrag} from './Marker.Drag';\r\n\r\n/*\r\n * @class Marker\r\n * @inherits Interactive layer\r\n * @aka L.Marker\r\n * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.marker([50.5, 30.5]).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var Marker = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka Marker options\r\n\toptions: {\r\n\t\t// @option icon: Icon = *\r\n\t\t// Icon instance to use for rendering the marker.\r\n\t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n\t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n\t\ticon: new IconDefault(),\r\n\r\n\t\t// Option inherited from \"Interactive layer\" abstract class\r\n\t\tinteractive: true,\r\n\r\n\t\t// @option keyboard: Boolean = true\r\n\t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n\t\tkeyboard: true,\r\n\r\n\t\t// @option title: String = ''\r\n\t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n\t\ttitle: '',\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the icon image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option zIndexOffset: Number = 0\r\n\t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n\t\tzIndexOffset: 0,\r\n\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the marker.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option riseOnHover: Boolean = false\r\n\t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n\t\triseOnHover: false,\r\n\r\n\t\t// @option riseOffset: Number = 250\r\n\t\t// The z-index offset used for the `riseOnHover` feature.\r\n\t\triseOffset: 250,\r\n\r\n\t\t// @option pane: String = 'markerPane'\r\n\t\t// `Map pane` where the markers icon will be added.\r\n\t\tpane: 'markerPane',\r\n\r\n\t\t// @option shadowPane: String = 'shadowPane'\r\n\t\t// `Map pane` where the markers shadow will be added.\r\n\t\tshadowPane: 'shadowPane',\r\n\r\n\t\t// @option bubblingMouseEvents: Boolean = false\r\n\t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n\t\tbubblingMouseEvents: false,\r\n\r\n\t\t// @section Draggable marker options\r\n\t\t// @option draggable: Boolean = false\r\n\t\t// Whether the marker is draggable with mouse/touch or not.\r\n\t\tdraggable: false,\r\n\r\n\t\t// @option autoPan: Boolean = false\r\n\t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n\t\tautoPan: false,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(50, 50)\r\n\t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n\t\t// map edge to start panning the map.\r\n\t\tautoPanPadding: [50, 50],\r\n\r\n\t\t// @option autoPanSpeed: Number = 10\r\n\t\t// Number of pixels the map should pan by.\r\n\t\tautoPanSpeed: 10\r\n\t},\r\n\r\n\t/* @section\r\n\t *\r\n\t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n\t */\r\n\r\n\tinitialize: function (latlng, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\t\tthis._latlng = latLng(latlng);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._initIcon();\r\n\t\tthis.update();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (this.dragging && this.dragging.enabled()) {\r\n\t\t\tthis.options.draggable = true;\r\n\t\t\tthis.dragging.removeHooks();\r\n\t\t}\r\n\t\tdelete this.dragging;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._removeIcon();\r\n\t\tthis._removeShadow();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\treturn {\r\n\t\t\tzoom: this.update,\r\n\t\t\tviewreset: this.update\r\n\t\t};\r\n\t},\r\n\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the current geographical position of the marker.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Changes the marker position to the given point.\r\n\tsetLatLng: function (latlng) {\r\n\t\tvar oldLatLng = this._latlng;\r\n\t\tthis._latlng = latLng(latlng);\r\n\t\tthis.update();\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n\t},\r\n\r\n\t// @method setZIndexOffset(offset: Number): this\r\n\t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n\tsetZIndexOffset: function (offset) {\r\n\t\tthis.options.zIndexOffset = offset;\r\n\t\treturn this.update();\r\n\t},\r\n\r\n\t// @method getIcon: Icon\r\n\t// Returns the current icon used by the marker\r\n\tgetIcon: function () {\r\n\t\treturn this.options.icon;\r\n\t},\r\n\r\n\t// @method setIcon(icon: Icon): this\r\n\t// Changes the marker icon.\r\n\tsetIcon: function (icon) {\r\n\r\n\t\tthis.options.icon = icon;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._initIcon();\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\tif (this._popup) {\r\n\t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetElement: function () {\r\n\t\treturn this._icon;\r\n\t},\r\n\r\n\tupdate: function () {\r\n\r\n\t\tif (this._icon && this._map) {\r\n\t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n\t\t\tthis._setPos(pos);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initIcon: function () {\r\n\t\tvar options = this.options,\r\n\t\t    classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n\t\tvar icon = options.icon.createIcon(this._icon),\r\n\t\t    addIcon = false;\r\n\r\n\t\t// if we're not reusing the icon, remove the old one and init new one\r\n\t\tif (icon !== this._icon) {\r\n\t\t\tif (this._icon) {\r\n\t\t\t\tthis._removeIcon();\r\n\t\t\t}\r\n\t\t\taddIcon = true;\r\n\r\n\t\t\tif (options.title) {\r\n\t\t\t\ticon.title = options.title;\r\n\t\t\t}\r\n\r\n\t\t\tif (icon.tagName === 'IMG') {\r\n\t\t\t\ticon.alt = options.alt || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tDomUtil.addClass(icon, classToAdd);\r\n\r\n\t\tif (options.keyboard) {\r\n\t\t\ticon.tabIndex = '0';\r\n\t\t}\r\n\r\n\t\tthis._icon = icon;\r\n\r\n\t\tif (options.riseOnHover) {\r\n\t\t\tthis.on({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n\t\t    addShadow = false;\r\n\r\n\t\tif (newShadow !== this._shadow) {\r\n\t\t\tthis._removeShadow();\r\n\t\t\taddShadow = true;\r\n\t\t}\r\n\r\n\t\tif (newShadow) {\r\n\t\t\tDomUtil.addClass(newShadow, classToAdd);\r\n\t\t\tnewShadow.alt = '';\r\n\t\t}\r\n\t\tthis._shadow = newShadow;\r\n\r\n\r\n\t\tif (options.opacity < 1) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\r\n\t\tif (addIcon) {\r\n\t\t\tthis.getPane().appendChild(this._icon);\r\n\t\t}\r\n\t\tthis._initInteraction();\r\n\t\tif (newShadow && addShadow) {\r\n\t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeIcon: function () {\r\n\t\tif (this.options.riseOnHover) {\r\n\t\t\tthis.off({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tDomUtil.remove(this._icon);\r\n\t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n\t\tthis._icon = null;\r\n\t},\r\n\r\n\t_removeShadow: function () {\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.remove(this._shadow);\r\n\t\t}\r\n\t\tthis._shadow = null;\r\n\t},\r\n\r\n\t_setPos: function (pos) {\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setPosition(this._icon, pos);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setPosition(this._shadow, pos);\r\n\t\t}\r\n\r\n\t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n\t\tthis._resetZIndex();\r\n\t},\r\n\r\n\t_updateZIndex: function (offset) {\r\n\t\tif (this._icon) {\r\n\t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n\t\t}\r\n\t},\r\n\r\n\t_animateZoom: function (opt) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n\t\tthis._setPos(pos);\r\n\t},\r\n\r\n\t_initInteraction: function () {\r\n\r\n\t\tif (!this.options.interactive) { return; }\r\n\r\n\t\tDomUtil.addClass(this._icon, 'leaflet-interactive');\r\n\r\n\t\tthis.addInteractiveTarget(this._icon);\r\n\r\n\t\tif (MarkerDrag) {\r\n\t\t\tvar draggable = this.options.draggable;\r\n\t\t\tif (this.dragging) {\r\n\t\t\t\tdraggable = this.dragging.enabled();\r\n\t\t\t\tthis.dragging.disable();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n\t\t\tif (draggable) {\r\n\t\t\t\tthis.dragging.enable();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Changes the opacity of the marker.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\t\tif (this._map) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tvar opacity = this.options.opacity;\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tDomUtil.setOpacity(this._icon, opacity);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tDomUtil.setOpacity(this._shadow, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t_bringToFront: function () {\r\n\t\tthis._updateZIndex(this.options.riseOffset);\r\n\t},\r\n\r\n\t_resetZIndex: function () {\r\n\t\tthis._updateZIndex(0);\r\n\t},\r\n\r\n\t_getPopupAnchor: function () {\r\n\t\treturn this.options.icon.options.popupAnchor;\r\n\t},\r\n\r\n\t_getTooltipAnchor: function () {\r\n\t\treturn this.options.icon.options.tooltipAnchor;\r\n\t}\r\n});\r\n\r\n\r\n// factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n// @factory L.marker(latlng: LatLng, options? : Marker options)\r\n// Instantiates a Marker object given a geographical point and optionally an options object.\r\nexport function marker(latlng, options) {\r\n\treturn new Marker(latlng, options);\r\n}\r\n","import {Layer} from '../Layer';\nimport * as Util from '../../core/Util';\n\n/*\n * @class Path\n * @aka L.Path\n * @inherits Interactive layer\n *\n * An abstract class that contains options and constants shared between vector\n * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n */\n\nexport var Path = Layer.extend({\n\n\t// @section\n\t// @aka Path options\n\toptions: {\n\t\t// @option stroke: Boolean = true\n\t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n\t\tstroke: true,\n\n\t\t// @option color: String = '#3388ff'\n\t\t// Stroke color\n\t\tcolor: '#3388ff',\n\n\t\t// @option weight: Number = 3\n\t\t// Stroke width in pixels\n\t\tweight: 3,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Stroke opacity\n\t\topacity: 1,\n\n\t\t// @option lineCap: String= 'round'\n\t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n\t\tlineCap: 'round',\n\n\t\t// @option lineJoin: String = 'round'\n\t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n\t\tlineJoin: 'round',\n\n\t\t// @option dashArray: String = null\n\t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashArray: null,\n\n\t\t// @option dashOffset: String = null\n\t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashOffset: null,\n\n\t\t// @option fill: Boolean = depends\n\t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n\t\tfill: false,\n\n\t\t// @option fillColor: String = *\n\t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n\t\tfillColor: null,\n\n\t\t// @option fillOpacity: Number = 0.2\n\t\t// Fill opacity.\n\t\tfillOpacity: 0.2,\n\n\t\t// @option fillRule: String = 'evenodd'\n\t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n\t\tfillRule: 'evenodd',\n\n\t\t// className: '',\n\n\t\t// Option inherited from \"Interactive layer\" abstract class\n\t\tinteractive: true,\n\n\t\t// @option bubblingMouseEvents: Boolean = true\n\t\t// When `true`, a mouse event on this path will trigger the same event on the map\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n\t\tbubblingMouseEvents: true\n\t},\n\n\tbeforeAdd: function (map) {\n\t\t// Renderer is set here because we need to call renderer.getEvents\n\t\t// before this.getEvents.\n\t\tthis._renderer = map.getRenderer(this);\n\t},\n\n\tonAdd: function () {\n\t\tthis._renderer._initPath(this);\n\t\tthis._reset();\n\t\tthis._renderer._addPath(this);\n\t},\n\n\tonRemove: function () {\n\t\tthis._renderer._removePath(this);\n\t},\n\n\t// @method redraw(): this\n\t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._renderer._updatePath(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method setStyle(style: Path options): this\n\t// Changes the appearance of a Path based on the options in the `Path options` object.\n\tsetStyle: function (style) {\n\t\tUtil.setOptions(this, style);\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._updateStyle(this);\n\t\t\tif (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {\n\t\t\t\tthis._updateBounds();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToFront(): this\n\t// Brings the layer to the top of all path layers.\n\tbringToFront: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToFront(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack(): this\n\t// Brings the layer to the bottom of all path layers.\n\tbringToBack: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToBack(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetElement: function () {\n\t\treturn this._path;\n\t},\n\n\t_reset: function () {\n\t\t// defined in child classes\n\t\tthis._project();\n\t\tthis._update();\n\t},\n\n\t_clickTolerance: function () {\n\t\t// used when doing hit detection for Canvas layers\n\t\treturn (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options.tolerance;\n\t}\n});\n","import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n/*\n * @class CircleMarker\n * @aka L.CircleMarker\n * @inherits Path\n *\n * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n */\n\nexport var CircleMarker = Path.extend({\n\n\t// @section\n\t// @aka CircleMarker options\n\toptions: {\n\t\tfill: true,\n\n\t\t// @option radius: Number = 10\n\t\t// Radius of the circle marker, in pixels\n\t\tradius: 10\n\t},\n\n\tinitialize: function (latlng, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis._radius = this.options.radius;\n\t},\n\n\t// @method setLatLng(latLng: LatLng): this\n\t// Sets the position of a circle marker to a new location.\n\tsetLatLng: function (latlng) {\n\t\tvar oldLatLng = this._latlng;\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis.redraw();\n\n\t\t// @event move: Event\n\t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n\t},\n\n\t// @method getLatLng(): LatLng\n\t// Returns the current geographical position of the circle marker\n\tgetLatLng: function () {\n\t\treturn this._latlng;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle marker. Units are in pixels.\n\tsetRadius: function (radius) {\n\t\tthis.options.radius = this._radius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of the circle\n\tgetRadius: function () {\n\t\treturn this._radius;\n\t},\n\n\tsetStyle : function (options) {\n\t\tvar radius = options && options.radius || this._radius;\n\t\tPath.prototype.setStyle.call(this, options);\n\t\tthis.setRadius(radius);\n\t\treturn this;\n\t},\n\n\t_project: function () {\n\t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._updateBounds();\n\t},\n\n\t_updateBounds: function () {\n\t\tvar r = this._radius,\n\t\t    r2 = this._radiusY || r,\n\t\t    w = this._clickTolerance(),\n\t\t    p = [r + w, r2 + w];\n\t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n\t},\n\n\t_update: function () {\n\t\tif (this._map) {\n\t\t\tthis._updatePath();\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updateCircle(this);\n\t},\n\n\t_empty: function () {\n\t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n\t}\n});\n\n\n// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n// Instantiates a circle marker object given a geographical point, and an optional options object.\nexport function circleMarker(latlng, options) {\n\treturn new CircleMarker(latlng, options);\n}\n","import {CircleMarker} from './CircleMarker';\nimport {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport {toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Earth} from '../../geo/crs/CRS.Earth';\n\n\n/*\n * @class Circle\n * @aka L.Circle\n * @inherits CircleMarker\n *\n * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n *\n * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n *\n * @example\n *\n * ```js\n * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n * ```\n */\n\nexport var Circle = CircleMarker.extend({\n\n\tinitialize: function (latlng, options, legacyOptions) {\n\t\tif (typeof options === 'number') {\n\t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n\t\t\toptions = Util.extend({}, legacyOptions, {radius: options});\n\t\t}\n\t\tUtil.setOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\n\t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n\t\t// @section\n\t\t// @aka Circle options\n\t\t// @option radius: Number; Radius of the circle, in meters.\n\t\tthis._mRadius = this.options.radius;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle. Units are in meters.\n\tsetRadius: function (radius) {\n\t\tthis._mRadius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of a circle. Units are in meters.\n\tgetRadius: function () {\n\t\treturn this._mRadius;\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\tvar half = [this._radius, this._radiusY || this._radius];\n\n\t\treturn new LatLngBounds(\n\t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n\t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n\t},\n\n\tsetStyle: Path.prototype.setStyle,\n\n\t_project: function () {\n\n\t\tvar lng = this._latlng.lng,\n\t\t    lat = this._latlng.lat,\n\t\t    map = this._map,\n\t\t    crs = map.options.crs;\n\n\t\tif (crs.distance === Earth.distance) {\n\t\t\tvar d = Math.PI / 180,\n\t\t\t    latR = (this._mRadius / Earth.R) / d,\n\t\t\t    top = map.project([lat + latR, lng]),\n\t\t\t    bottom = map.project([lat - latR, lng]),\n\t\t\t    p = top.add(bottom).divideBy(2),\n\t\t\t    lat2 = map.unproject(p).lat,\n\t\t\t    lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n\t\t\t            (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n\t\t\tif (isNaN(lngR) || lngR === 0) {\n\t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n\t\t\t}\n\n\t\t\tthis._point = p.subtract(map.getPixelOrigin());\n\t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n\t\t\tthis._radiusY = p.y - top.y;\n\n\t\t} else {\n\t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n\t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n\t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n\t\t}\n\n\t\tthis._updateBounds();\n\t}\n});\n\n// @factory L.circle(latlng: LatLng, options?: Circle options)\n// Instantiates a circle object given a geographical point, and an options object\n// which contains the circle radius.\n// @alternative\n// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n// Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n// Do not use in new applications or plugins.\nexport function circle(latlng, options, legacyOptions) {\n\treturn new Circle(latlng, options, legacyOptions);\n}\n","import {Path} from './Path';\nimport * as Util from '../../core/Util';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {LatLng, toLatLng} from '../../geo/LatLng';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\nimport {Point} from '../../geometry/Point';\n\n/*\n * @class Polyline\n * @aka L.Polyline\n * @inherits Path\n *\n * A class for drawing polyline overlays on a map. Extends `Path`.\n *\n * @example\n *\n * ```js\n * // create a red polyline from an array of LatLng points\n * var latlngs = [\n * \t[45.51, -122.68],\n * \t[37.77, -122.43],\n * \t[34.04, -118.2]\n * ];\n *\n * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polyline\n * map.fitBounds(polyline.getBounds());\n * ```\n *\n * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n *\n * ```js\n * // create a red polyline from an array of arrays of LatLng points\n * var latlngs = [\n * \t[[45.51, -122.68],\n * \t [37.77, -122.43],\n * \t [34.04, -118.2]],\n * \t[[40.78, -73.91],\n * \t [41.83, -87.62],\n * \t [32.76, -96.72]]\n * ];\n * ```\n */\n\n\nexport var Polyline = Path.extend({\n\n\t// @section\n\t// @aka Polyline options\n\toptions: {\n\t\t// @option smoothFactor: Number = 1.0\n\t\t// How much to simplify the polyline on each zoom level. More means\n\t\t// better performance and smoother look, and less means more accurate representation.\n\t\tsmoothFactor: 1.0,\n\n\t\t// @option noClip: Boolean = false\n\t\t// Disable polyline clipping.\n\t\tnoClip: false\n\t},\n\n\tinitialize: function (latlngs, options) {\n\t\tUtil.setOptions(this, options);\n\t\tthis._setLatLngs(latlngs);\n\t},\n\n\t// @method getLatLngs(): LatLng[]\n\t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n\tgetLatLngs: function () {\n\t\treturn this._latlngs;\n\t},\n\n\t// @method setLatLngs(latlngs: LatLng[]): this\n\t// Replaces all the points in the polyline with the given array of geographical points.\n\tsetLatLngs: function (latlngs) {\n\t\tthis._setLatLngs(latlngs);\n\t\treturn this.redraw();\n\t},\n\n\t// @method isEmpty(): Boolean\n\t// Returns `true` if the Polyline has no LatLngs.\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length;\n\t},\n\n\t// @method closestLayerPoint(p: Point): Point\n\t// Returns the point closest to `p` on the Polyline.\n\tclosestLayerPoint: function (p) {\n\t\tvar minDistance = Infinity,\n\t\t    minPoint = null,\n\t\t    closest = LineUtil._sqClosestPointOnSegment,\n\t\t    p1, p2;\n\n\t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n\t\t\tvar points = this._parts[j];\n\n\t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n\t\t\t\tp1 = points[i - 1];\n\t\t\t\tp2 = points[i];\n\n\t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n\t\t\t\tif (sqDist < minDistance) {\n\t\t\t\t\tminDistance = sqDist;\n\t\t\t\t\tminPoint = closest(p, p1, p2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minPoint) {\n\t\t\tminPoint.distance = Math.sqrt(minDistance);\n\t\t}\n\t\treturn minPoint;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the polyline.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\n\t\tvar i, halfDist, segDist, dist, p1, p2, ratio,\n\t\t    points = this._rings[0],\n\t\t    len = points.length;\n\n\t\tif (!len) { return null; }\n\n\t\t// polyline centroid algorithm; only uses the first ring if there are multiple\n\n\t\tfor (i = 0, halfDist = 0; i < len - 1; i++) {\n\t\t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\n\t\t}\n\n\t\t// The line is so small in the current view that all points are on the same pixel.\n\t\tif (halfDist === 0) {\n\t\t\treturn this._map.layerPointToLatLng(points[0]);\n\t\t}\n\n\t\tfor (i = 0, dist = 0; i < len - 1; i++) {\n\t\t\tp1 = points[i];\n\t\t\tp2 = points[i + 1];\n\t\t\tsegDist = p1.distanceTo(p2);\n\t\t\tdist += segDist;\n\n\t\t\tif (dist > halfDist) {\n\t\t\t\tratio = (dist - halfDist) / segDist;\n\t\t\t\treturn this._map.layerPointToLatLng([\n\t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\n\t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\treturn this._bounds;\n\t},\n\n\t// @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this\n\t// Adds a given point to the polyline. By default, adds to the first ring of\n\t// the polyline in case of a multi-polyline, but can be overridden by passing\n\t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n\taddLatLng: function (latlng, latlngs) {\n\t\tlatlngs = latlngs || this._defaultShape();\n\t\tlatlng = toLatLng(latlng);\n\t\tlatlngs.push(latlng);\n\t\tthis._bounds.extend(latlng);\n\t\treturn this.redraw();\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tthis._bounds = new LatLngBounds();\n\t\tthis._latlngs = this._convertLatLngs(latlngs);\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n\t},\n\n\t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = [],\n\t\t    flat = LineUtil.isFlat(latlngs);\n\n\t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n\t\t\tif (flat) {\n\t\t\t\tresult[i] = toLatLng(latlngs[i]);\n\t\t\t\tthis._bounds.extend(result[i]);\n\t\t\t} else {\n\t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t_project: function () {\n\t\tvar pxBounds = new Bounds();\n\t\tthis._rings = [];\n\t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n\t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n\t\t\tthis._rawPxBounds = pxBounds;\n\t\t\tthis._updateBounds();\n\t\t}\n\t},\n\n\t_updateBounds: function () {\n\t\tvar w = this._clickTolerance(),\n\t\t    p = new Point(w, w);\n\t\tthis._pxBounds = new Bounds([\n\t\t\tthis._rawPxBounds.min.subtract(p),\n\t\t\tthis._rawPxBounds.max.add(p)\n\t\t]);\n\t},\n\n\t// recursively turns latlngs into a set of rings with projected coordinates\n\t_projectLatlngs: function (latlngs, result, projectedBounds) {\n\t\tvar flat = latlngs[0] instanceof LatLng,\n\t\t    len = latlngs.length,\n\t\t    i, ring;\n\n\t\tif (flat) {\n\t\t\tring = [];\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n\t\t\t\tprojectedBounds.extend(ring[i]);\n\t\t\t}\n\t\t\tresult.push(ring);\n\t\t} else {\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n\t\t\t}\n\t\t}\n\t},\n\n\t// clip polyline by renderer bounds so that we have less to render for performance\n\t_clipPoints: function () {\n\t\tvar bounds = this._renderer._bounds;\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tvar parts = this._parts,\n\t\t    i, j, k, len, len2, segment, points;\n\n\t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n\t\t\tpoints = this._rings[i];\n\n\t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n\t\t\t\tsegment = LineUtil.clipSegment(points[j], points[j + 1], bounds, j, true);\n\n\t\t\t\tif (!segment) { continue; }\n\n\t\t\t\tparts[k] = parts[k] || [];\n\t\t\t\tparts[k].push(segment[0]);\n\n\t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n\t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n\t\t\t\t\tparts[k].push(segment[1]);\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// simplify each clipped part of the polyline for performance\n\t_simplifyPoints: function () {\n\t\tvar parts = this._parts,\n\t\t    tolerance = this.options.smoothFactor;\n\n\t\tfor (var i = 0, len = parts.length; i < len; i++) {\n\t\t\tparts[i] = LineUtil.simplify(parts[i], tolerance);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tif (!this._map) { return; }\n\n\t\tthis._clipPoints();\n\t\tthis._simplifyPoints();\n\t\tthis._updatePath();\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p, closed) {\n\t\tvar i, j, k, len, len2, part,\n\t\t    w = this._clickTolerance();\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// hit detection for polylines\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tif (!closed && (j === 0)) { continue; }\n\n\t\t\t\tif (LineUtil.pointToSegmentDistance(p, part[k], part[j]) <= w) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\n// @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n// Instantiates a polyline object given an array of geographical points and\n// optionally an options object. You can create a `Polyline` object with\n// multiple separate lines (`MultiPolyline`) by passing an array of arrays\n// of geographic points.\nexport function polyline(latlngs, options) {\n\treturn new Polyline(latlngs, options);\n}\n\n// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\nPolyline._flat = LineUtil._flat;\n","import {Polyline} from './Polyline';\nimport {LatLng} from '../../geo/LatLng';\nimport * as LineUtil from '../../geometry/LineUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport * as PolyUtil from '../../geometry/PolyUtil';\n\n/*\n * @class Polygon\n * @aka L.Polygon\n * @inherits Polyline\n *\n * A class for drawing polygon overlays on a map. Extends `Polyline`.\n *\n * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n *\n *\n * @example\n *\n * ```js\n * // create a red polygon from an array of LatLng points\n * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n *\n * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polygon\n * map.fitBounds(polygon.getBounds());\n * ```\n *\n * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n *\n * ```js\n * var latlngs = [\n *   [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *   [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ];\n * ```\n *\n * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n *\n * ```js\n * var latlngs = [\n *   [ // first polygon\n *     [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *     [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n *   ],\n *   [ // second polygon\n *     [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n *   ]\n * ];\n * ```\n */\n\nexport var Polygon = Polyline.extend({\n\n\toptions: {\n\t\tfill: true\n\t},\n\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length || !this._latlngs[0].length;\n\t},\n\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\n\t\tvar i, j, p1, p2, f, area, x, y, center,\n\t\t    points = this._rings[0],\n\t\t    len = points.length;\n\n\t\tif (!len) { return null; }\n\n\t\t// polygon centroid algorithm; only uses the first ring if there are multiple\n\n\t\tarea = x = y = 0;\n\n\t\tfor (i = 0, j = len - 1; i < len; j = i++) {\n\t\t\tp1 = points[i];\n\t\t\tp2 = points[j];\n\n\t\t\tf = p1.y * p2.x - p2.y * p1.x;\n\t\t\tx += (p1.x + p2.x) * f;\n\t\t\ty += (p1.y + p2.y) * f;\n\t\t\tarea += f * 3;\n\t\t}\n\n\t\tif (area === 0) {\n\t\t\t// Polygon is so small that all points are on same pixel.\n\t\t\tcenter = points[0];\n\t\t} else {\n\t\t\tcenter = [x / area, y / area];\n\t\t}\n\t\treturn this._map.layerPointToLatLng(center);\n\t},\n\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n\t\t    len = result.length;\n\n\t\t// remove last point if it equals first one\n\t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n\t\t\tresult.pop();\n\t\t}\n\t\treturn result;\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n\t\tif (LineUtil.isFlat(this._latlngs)) {\n\t\t\tthis._latlngs = [this._latlngs];\n\t\t}\n\t},\n\n\t_defaultShape: function () {\n\t\treturn LineUtil.isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n\t},\n\n\t_clipPoints: function () {\n\t\t// polygons need a different clipping algorithm so we redefine that\n\n\t\tvar bounds = this._renderer._bounds,\n\t\t    w = this.options.weight,\n\t\t    p = new Point(w, w);\n\n\t\t// increase clip padding by stroke width to avoid stroke on clip edges\n\t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n\t\t\tclipped = PolyUtil.clipPolygon(this._rings[i], bounds, true);\n\t\t\tif (clipped.length) {\n\t\t\t\tthis._parts.push(clipped);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this, true);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\tvar inside = false,\n\t\t    part, p1, p2, i, j, k, len, len2;\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// ray casting algorithm for detecting if point is in polygon\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tp1 = part[j];\n\t\t\t\tp2 = part[k];\n\n\t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n\t\t\t\t\tinside = !inside;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// also check if it's on polygon stroke\n\t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n\t}\n\n});\n\n\n// @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\nexport function polygon(latlngs, options) {\n\treturn new Polygon(latlngs, options);\n}\n","import {LayerGroup} from './LayerGroup';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {Marker} from './marker/Marker';\r\nimport {Circle} from './vector/Circle';\r\nimport {CircleMarker} from './vector/CircleMarker';\r\nimport {Polyline} from './vector/Polyline';\r\nimport {Polygon} from './vector/Polygon';\r\nimport {LatLng} from '../geo/LatLng';\r\nimport * as LineUtil from '../geometry/LineUtil';\r\n\r\n\r\n/*\r\n * @class GeoJSON\r\n * @aka L.GeoJSON\r\n * @inherits FeatureGroup\r\n *\r\n * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.geoJSON(data, {\r\n * \tstyle: function (feature) {\r\n * \t\treturn {color: feature.properties.color};\r\n * \t}\r\n * }).bindPopup(function (layer) {\r\n * \treturn layer.feature.properties.description;\r\n * }).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var GeoJSON = FeatureGroup.extend({\r\n\r\n\t/* @section\r\n\t * @aka GeoJSON options\r\n\t *\r\n\t * @option pointToLayer: Function = *\r\n\t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n\t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n\t * The default is to spawn a default `Marker`:\r\n\t * ```js\r\n\t * function(geoJsonPoint, latlng) {\r\n\t * \treturn L.marker(latlng);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option style: Function = *\r\n\t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n\t * called internally when data is added.\r\n\t * The default value is to not override any defaults:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn {}\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option onEachFeature: Function = *\r\n\t * A `Function` that will be called once for each created `Feature`, after it has\r\n\t * been created and styled. Useful for attaching events and popups to features.\r\n\t * The default is to do nothing with the newly created layers:\r\n\t * ```js\r\n\t * function (feature, layer) {}\r\n\t * ```\r\n\t *\r\n\t * @option filter: Function = *\r\n\t * A `Function` that will be used to decide whether to include a feature or not.\r\n\t * The default is to include all features:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn true;\r\n\t * }\r\n\t * ```\r\n\t * Note: dynamically changing the `filter` option will have effect only on newly\r\n\t * added data. It will _not_ re-evaluate already included features.\r\n\t *\r\n\t * @option coordsToLatLng: Function = *\r\n\t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n\t * The default is the `coordsToLatLng` static method.\r\n\t *\r\n\t * @option markersInheritOptions: Boolean = false\r\n\t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n\t */\r\n\r\n\tinitialize: function (geojson, options) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tif (geojson) {\r\n\t\t\tthis.addData(geojson);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addData( <GeoJSON> data ): this\r\n\t// Adds a GeoJSON object to the layer.\r\n\taddData: function (geojson) {\r\n\t\tvar features = Util.isArray(geojson) ? geojson : geojson.features,\r\n\t\t    i, len, feature;\r\n\r\n\t\tif (features) {\r\n\t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n\t\t\t\t// only add this if geometry or geometries are set and not null\r\n\t\t\t\tfeature = features[i];\r\n\t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n\t\t\t\t\tthis.addData(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar options = this.options;\r\n\r\n\t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n\t\tvar layer = geometryToLayer(geojson, options);\r\n\t\tif (!layer) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tlayer.feature = asFeature(geojson);\r\n\r\n\t\tlayer.defaultOptions = layer.options;\r\n\t\tthis.resetStyle(layer);\r\n\r\n\t\tif (options.onEachFeature) {\r\n\t\t\toptions.onEachFeature(geojson, layer);\r\n\t\t}\r\n\r\n\t\treturn this.addLayer(layer);\r\n\t},\r\n\r\n\t// @method resetStyle( <Path> layer? ): this\r\n\t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n\t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n\tresetStyle: function (layer) {\r\n\t\tif (layer === undefined) {\r\n\t\t\treturn this.eachLayer(this.resetStyle, this);\r\n\t\t}\r\n\t\t// reset any custom styles\r\n\t\tlayer.options = Util.extend({}, layer.defaultOptions);\r\n\t\tthis._setLayerStyle(layer, this.options.style);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setStyle( <Function> style ): this\r\n\t// Changes styles of GeoJSON vector layers with the given style function.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.eachLayer(function (layer) {\r\n\t\t\tthis._setLayerStyle(layer, style);\r\n\t\t}, this);\r\n\t},\r\n\r\n\t_setLayerStyle: function (layer, style) {\r\n\t\tif (layer.setStyle) {\r\n\t\t\tif (typeof style === 'function') {\r\n\t\t\t\tstyle = style(layer.feature);\r\n\t\t\t}\r\n\t\t\tlayer.setStyle(style);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @section\r\n// There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n// Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// functions if provided as options.\r\nexport function geometryToLayer(geojson, options) {\r\n\r\n\tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n\t    coords = geometry ? geometry.coordinates : null,\r\n\t    layers = [],\r\n\t    pointToLayer = options && options.pointToLayer,\r\n\t    _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n\t    latlng, latlngs, i, len;\r\n\r\n\tif (!coords && !geometry) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (geometry.type) {\r\n\tcase 'Point':\r\n\t\tlatlng = _coordsToLatLng(coords);\r\n\t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n\tcase 'MultiPoint':\r\n\t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n\t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n\t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'LineString':\r\n\tcase 'MultiLineString':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n\t\treturn new Polyline(latlngs, options);\r\n\r\n\tcase 'Polygon':\r\n\tcase 'MultiPolygon':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n\t\treturn new Polygon(latlngs, options);\r\n\r\n\tcase 'GeometryCollection':\r\n\t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n\t\t\tvar layer = geometryToLayer({\r\n\t\t\t\tgeometry: geometry.geometries[i],\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tproperties: geojson.properties\r\n\t\t\t}, options);\r\n\r\n\t\t\tif (layer) {\r\n\t\t\t\tlayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tdefault:\r\n\t\tthrow new Error('Invalid GeoJSON object.');\r\n\t}\r\n}\r\n\r\nfunction _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n\treturn pointToLayerFn ?\r\n\t\tpointToLayerFn(geojson, latlng) :\r\n\t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n}\r\n\r\n// @function coordsToLatLng(coords: Array): LatLng\r\n// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\nexport function coordsToLatLng(coords) {\r\n\treturn new LatLng(coords[1], coords[0], coords[2]);\r\n}\r\n\r\n// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\nexport function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n\tvar latlngs = [];\r\n\r\n\tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n\t\tlatlng = levelsDeep ?\r\n\t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n\t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n\t\tlatlngs.push(latlng);\r\n\t}\r\n\r\n\treturn latlngs;\r\n}\r\n\r\n// @function latLngToCoords(latlng: LatLng, precision?: Number): Array\r\n// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\nexport function latLngToCoords(latlng, precision) {\r\n\tprecision = typeof precision === 'number' ? precision : 6;\r\n\treturn latlng.alt !== undefined ?\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision), Util.formatNum(latlng.alt, precision)] :\r\n\t\t[Util.formatNum(latlng.lng, precision), Util.formatNum(latlng.lat, precision)];\r\n}\r\n\r\n// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean): Array\r\n// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\nexport function latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n\tvar coords = [];\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tcoords.push(levelsDeep ?\r\n\t\t\tlatLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) :\r\n\t\t\tlatLngToCoords(latlngs[i], precision));\r\n\t}\r\n\r\n\tif (!levelsDeep && closed) {\r\n\t\tcoords.push(coords[0]);\r\n\t}\r\n\r\n\treturn coords;\r\n}\r\n\r\nexport function getFeature(layer, newGeometry) {\r\n\treturn layer.feature ?\r\n\t\tUtil.extend({}, layer.feature, {geometry: newGeometry}) :\r\n\t\tasFeature(newGeometry);\r\n}\r\n\r\n// @function asFeature(geojson: Object): Object\r\n// Normalize GeoJSON geometries/features into GeoJSON features.\r\nexport function asFeature(geojson) {\r\n\tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n\t\treturn geojson;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttype: 'Feature',\r\n\t\tproperties: {},\r\n\t\tgeometry: geojson\r\n\t};\r\n}\r\n\r\nvar PointToGeoJSON = {\r\n\ttoGeoJSON: function (precision) {\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'Point',\r\n\t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// @namespace Marker\r\n// @section Other methods\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\nMarker.include(PointToGeoJSON);\r\n\r\n// @namespace CircleMarker\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\nCircle.include(PointToGeoJSON);\r\nCircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n// @namespace Polyline\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\nPolyline.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar multi = !LineUtil.isFlat(this._latlngs);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n// @namespace Polygon\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\nPolygon.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar holes = !LineUtil.isFlat(this._latlngs),\r\n\t\t    multi = holes && !LineUtil.isFlat(this._latlngs[0]);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n\t\tif (!holes) {\r\n\t\t\tcoords = [coords];\r\n\t\t}\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n// @namespace LayerGroup\r\nLayerGroup.include({\r\n\ttoMultiPoint: function (precision) {\r\n\t\tvar coords = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n\t\t});\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'MultiPoint',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t},\r\n\r\n\t// @method toGeoJSON(precision?: Number): Object\r\n\t// `precision` is the number of decimal places for coordinates.\r\n\t// The default value is 6 places.\r\n\t// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n\ttoGeoJSON: function (precision) {\r\n\r\n\t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n\t\tif (type === 'MultiPoint') {\r\n\t\t\treturn this.toMultiPoint(precision);\r\n\t\t}\r\n\r\n\t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n\t\t    jsons = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tif (layer.toGeoJSON) {\r\n\t\t\t\tvar json = layer.toGeoJSON(precision);\r\n\t\t\t\tif (isGeometryCollection) {\r\n\t\t\t\t\tjsons.push(json.geometry);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar feature = asFeature(json);\r\n\t\t\t\t\t// Squash nested feature collections\r\n\t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n\t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tjsons.push(feature);\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\tif (isGeometryCollection) {\r\n\t\t\treturn getFeature(this, {\r\n\t\t\t\tgeometries: jsons,\r\n\t\t\t\ttype: 'GeometryCollection'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'FeatureCollection',\r\n\t\t\tfeatures: jsons\r\n\t\t};\r\n\t}\r\n});\r\n\r\n// @namespace GeoJSON\r\n// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n// Creates a GeoJSON layer. Optionally accepts an object in\r\n// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n// (you can alternatively add it later with `addData` method) and an `options` object.\r\nexport function geoJSON(geojson, options) {\r\n\treturn new GeoJSON(geojson, options);\r\n}\r\n\r\n// Backward compatibility.\r\nexport var geoJson = geoJSON;\r\n","import {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLngBounds} from '../geo/LatLngBounds';\r\nimport {Bounds} from '../geometry/Bounds';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class ImageOverlay\r\n * @aka L.ImageOverlay\r\n * @inherits Interactive layer\r\n *\r\n * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var ImageOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka ImageOverlay options\r\n\toptions: {\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the image overlay.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the image.\r\n\t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option errorOverlayUrl: String = ''\r\n\t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n\t\terrorOverlayUrl: '',\r\n\r\n\t\t// @option zIndex: Number = 1\r\n\t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n\t\tzIndex: 1,\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom class name to assign to the image. Empty by default.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n\t\tthis._url = url;\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tUtil.setOptions(this, options);\r\n\t},\r\n\r\n\tonAdd: function () {\r\n\t\tif (!this._image) {\r\n\t\t\tthis._initImage();\r\n\r\n\t\t\tif (this.options.opacity < 1) {\r\n\t\t\t\tthis._updateOpacity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\tDomUtil.addClass(this._image, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._image);\r\n\t\t}\r\n\r\n\t\tthis.getPane().appendChild(this._image);\r\n\t\tthis._reset();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tDomUtil.remove(this._image);\r\n\t\tif (this.options.interactive) {\r\n\t\t\tthis.removeInteractiveTarget(this._image);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Sets the opacity of the overlay.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsetStyle: function (styleOpts) {\r\n\t\tif (styleOpts.opacity) {\r\n\t\t\tthis.setOpacity(styleOpts.opacity);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer to the top of all overlays.\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer to the bottom of all overlays.\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setUrl(url: String): this\r\n\t// Changes the URL of the image.\r\n\tsetUrl: function (url) {\r\n\t\tthis._url = url;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._image.src = url;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setBounds(bounds: LatLngBounds): this\r\n\t// Update the bounds that this ImageOverlay covers\r\n\tsetBounds: function (bounds) {\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._reset();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._reset,\r\n\t\t\tviewreset: this._reset\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method setZIndex(value: Number): this\r\n\t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n\tsetZIndex: function (value) {\r\n\t\tthis.options.zIndex = value;\r\n\t\tthis._updateZIndex();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Get the bounds that this ImageOverlay covers\r\n\tgetBounds: function () {\r\n\t\treturn this._bounds;\r\n\t},\r\n\r\n\t// @method getElement(): HTMLElement\r\n\t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n\t// used by this overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._image;\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n\t\tvar img = this._image = wasElementSupplied ? this._url : DomUtil.create('img');\r\n\r\n\t\tDomUtil.addClass(img, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(img, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(img, this.options.className); }\r\n\r\n\t\timg.onselectstart = Util.falseFn;\r\n\t\timg.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the ImageOverlay layer has loaded its image\r\n\t\timg.onload = Util.bind(this.fire, this, 'load');\r\n\t\timg.onerror = Util.bind(this._overlayOnError, this, 'error');\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\tif (this.options.zIndex) {\r\n\t\t\tthis._updateZIndex();\r\n\t\t}\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tthis._url = img.src;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\timg.src = this._url;\r\n\t\timg.alt = this.options.alt;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar scale = this._map.getZoomScale(e.zoom),\r\n\t\t    offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n\t\tDomUtil.setTransform(this._image, offset, scale);\r\n\t},\r\n\r\n\t_reset: function () {\r\n\t\tvar image = this._image,\r\n\t\t    bounds = new Bounds(\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n\t\t    size = bounds.getSize();\r\n\r\n\t\tDomUtil.setPosition(image, bounds.min);\r\n\r\n\t\timage.style.width  = size.x + 'px';\r\n\t\timage.style.height = size.y + 'px';\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tDomUtil.setOpacity(this._image, this.options.opacity);\r\n\t},\r\n\r\n\t_updateZIndex: function () {\r\n\t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n\t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n\t\t}\r\n\t},\r\n\r\n\t_overlayOnError: function () {\r\n\t\t// @event error: Event\r\n\t\t// Fired when the ImageOverlay layer fails to load its image\r\n\t\tthis.fire('error');\r\n\r\n\t\tvar errorUrl = this.options.errorOverlayUrl;\r\n\t\tif (errorUrl && this._url !== errorUrl) {\r\n\t\t\tthis._url = errorUrl;\r\n\t\t\tthis._image.src = errorUrl;\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n// Instantiates an image overlay object given the URL of the image and the\r\n// geographical bounds it is tied to.\r\nexport var imageOverlay = function (url, bounds, options) {\r\n\treturn new ImageOverlay(url, bounds, options);\r\n};\r\n","import {ImageOverlay} from './ImageOverlay';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class VideoOverlay\r\n * @aka L.VideoOverlay\r\n * @inherits ImageOverlay\r\n *\r\n * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n *\r\n * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n * HTML5 element.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n * ```\r\n */\r\n\r\nexport var VideoOverlay = ImageOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka VideoOverlay options\r\n\toptions: {\r\n\t\t// @option autoplay: Boolean = true\r\n\t\t// Whether the video starts playing automatically when loaded.\r\n\t\tautoplay: true,\r\n\r\n\t\t// @option loop: Boolean = true\r\n\t\t// Whether the video will loop back to the beginning when played.\r\n\t\tloop: true,\r\n\r\n\t\t// @option keepAspectRatio: Boolean = true\r\n\t\t// Whether the video will save aspect ratio after the projection.\r\n\t\t// Relevant for supported browsers. Browser compatibility- https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit\r\n\t\tkeepAspectRatio: true,\r\n\r\n\t\t// @option muted: Boolean = false\r\n\t\t// Whether the video starts on mute when loaded.\r\n\t\tmuted: false\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n\t\tvar vid = this._image = wasElementSupplied ? this._url : DomUtil.create('video');\r\n\r\n\t\tDomUtil.addClass(vid, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { DomUtil.addClass(vid, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { DomUtil.addClass(vid, this.options.className); }\r\n\r\n\t\tvid.onselectstart = Util.falseFn;\r\n\t\tvid.onmousemove = Util.falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the video has finished loading the first frame\r\n\t\tvid.onloadeddata = Util.bind(this.fire, this, 'load');\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n\t\t\tvar sources = [];\r\n\t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n\t\t\t\tsources.push(sourceElements[j].src);\r\n\t\t\t}\r\n\r\n\t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!Util.isArray(this._url)) { this._url = [this._url]; }\r\n\r\n\t\tif (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {\r\n\t\t\tvid.style['objectFit'] = 'fill';\r\n\t\t}\r\n\t\tvid.autoplay = !!this.options.autoplay;\r\n\t\tvid.loop = !!this.options.loop;\r\n\t\tvid.muted = !!this.options.muted;\r\n\t\tfor (var i = 0; i < this._url.length; i++) {\r\n\t\t\tvar source = DomUtil.create('source');\r\n\t\t\tsource.src = this._url[i];\r\n\t\t\tvid.appendChild(source);\r\n\t\t}\r\n\t}\r\n\r\n\t// @method getElement(): HTMLVideoElement\r\n\t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n\t// used by this overlay.\r\n});\r\n\r\n\r\n// @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n// Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n// geographical bounds it is tied to.\r\n\r\nexport function videoOverlay(video, bounds, options) {\r\n\treturn new VideoOverlay(video, bounds, options);\r\n}\r\n","import {ImageOverlay} from './ImageOverlay';\nimport * as DomUtil from '../dom/DomUtil';\nimport * as Util from '../core/Util';\n\n/*\n * @class SVGOverlay\n * @aka L.SVGOverlay\n * @inherits ImageOverlay\n *\n * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n *\n * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n *\n * @example\n *\n * ```js\n * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n * ```\n */\n\nexport var SVGOverlay = ImageOverlay.extend({\n\t_initImage: function () {\n\t\tvar el = this._image = this._url;\n\n\t\tDomUtil.addClass(el, 'leaflet-image-layer');\n\t\tif (this._zoomAnimated) { DomUtil.addClass(el, 'leaflet-zoom-animated'); }\n\t\tif (this.options.className) { DomUtil.addClass(el, this.options.className); }\n\n\t\tel.onselectstart = Util.falseFn;\n\t\tel.onmousemove = Util.falseFn;\n\t}\n\n\t// @method getElement(): SVGElement\n\t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n\t// used by this overlay.\n});\n\n\n// @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n// Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n// A viewBox attribute is required on the SVG element to zoom in and out properly.\n\nexport function svgOverlay(el, bounds, options) {\n\treturn new SVGOverlay(el, bounds, options);\n}\n","import {Layer} from './Layer';\r\nimport {FeatureGroup} from './FeatureGroup';\r\nimport * as Util from '../core/Util';\r\nimport {toLatLng} from '../geo/LatLng';\r\nimport {toPoint} from '../geometry/Point';\r\nimport * as DomUtil from '../dom/DomUtil';\r\n\r\n/*\r\n * @class DivOverlay\r\n * @inherits Layer\r\n * @aka L.DivOverlay\r\n * Base model for L.Popup and L.Tooltip. Inherit from it for custom popup like plugins.\r\n */\r\n\r\n// @namespace DivOverlay\r\nexport var DivOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka DivOverlay options\r\n\toptions: {\r\n\t\t// @option offset: Point = Point(0, 7)\r\n\t\t// The offset of the popup position. Useful to control the anchor\r\n\t\t// of the popup when opening it on some overlays.\r\n\t\toffset: [0, 7],\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: '',\r\n\r\n\t\t// @option pane: String = 'popupPane'\r\n\t\t// `Map pane` where the popup will be added.\r\n\t\tpane: 'popupPane'\r\n\t},\r\n\r\n\tinitialize: function (options, source) {\r\n\t\tUtil.setOptions(this, options);\r\n\r\n\t\tthis._source = source;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n\t\tif (!this._container) {\r\n\t\t\tthis._initLayout();\r\n\t\t}\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t}\r\n\r\n\t\tclearTimeout(this._removeTimeout);\r\n\t\tthis.getPane().appendChild(this._container);\r\n\t\tthis.update();\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 1);\r\n\t\t}\r\n\r\n\t\tthis.bringToFront();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tDomUtil.setOpacity(this._container, 0);\r\n\t\t\tthis._removeTimeout = setTimeout(Util.bind(DomUtil.remove, undefined, this._container), 200);\r\n\t\t} else {\r\n\t\t\tDomUtil.remove(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the geographical point of popup.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Sets the geographical point where the popup will open.\r\n\tsetLatLng: function (latlng) {\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t\tif (this._map) {\r\n\t\t\tthis._updatePosition();\r\n\t\t\tthis._adjustPan();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContent: String|HTMLElement\r\n\t// Returns the content of the popup.\r\n\tgetContent: function () {\r\n\t\treturn this._content;\r\n\t},\r\n\r\n\t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n\t// Sets the HTML content of the popup. If a function is passed the source layer will be passed to the function. The function should return a `String` or `HTMLElement` to be used in the popup.\r\n\tsetContent: function (content) {\r\n\t\tthis._content = content;\r\n\t\tthis.update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getElement: String|HTMLElement\r\n\t// Returns the HTML container of the popup.\r\n\tgetElement: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method update: null\r\n\t// Updates the popup content, layout and position. Useful for updating the popup after something inside changed, e.g. image loaded.\r\n\tupdate: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tthis._container.style.visibility = 'hidden';\r\n\r\n\t\tthis._updateContent();\r\n\t\tthis._updateLayout();\r\n\t\tthis._updatePosition();\r\n\r\n\t\tthis._container.style.visibility = '';\r\n\r\n\t\tthis._adjustPan();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._updatePosition,\r\n\t\t\tviewreset: this._updatePosition\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method isOpen: Boolean\r\n\t// Returns `true` when the popup is visible on the map.\r\n\tisOpen: function () {\r\n\t\treturn !!this._map && this._map.hasLayer(this);\r\n\t},\r\n\r\n\t// @method bringToFront: this\r\n\t// Brings this popup in front of other popups (in the same map pane).\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toFront(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack: this\r\n\t// Brings this popup to the back of other popups (in the same map pane).\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\tDomUtil.toBack(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_prepareOpen: function (parent, layer, latlng) {\r\n\t\tif (!(layer instanceof Layer)) {\r\n\t\t\tlatlng = layer;\r\n\t\t\tlayer = parent;\r\n\t\t}\r\n\r\n\t\tif (layer instanceof FeatureGroup) {\r\n\t\t\tfor (var id in parent._layers) {\r\n\t\t\t\tlayer = parent._layers[id];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!latlng) {\r\n\t\t\tif (layer.getCenter) {\r\n\t\t\t\tlatlng = layer.getCenter();\r\n\t\t\t} else if (layer.getLatLng) {\r\n\t\t\t\tlatlng = layer.getLatLng();\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// set overlay source to this layer\r\n\t\tthis._source = layer;\r\n\r\n\t\t// update the overlay (content, layout, ect...)\r\n\t\tthis.update();\r\n\r\n\t\treturn latlng;\r\n\t},\r\n\r\n\t_updateContent: function () {\r\n\t\tif (!this._content) { return; }\r\n\r\n\t\tvar node = this._contentNode;\r\n\t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n\t\tif (typeof content === 'string') {\r\n\t\t\tnode.innerHTML = content;\r\n\t\t} else {\r\n\t\t\twhile (node.hasChildNodes()) {\r\n\t\t\t\tnode.removeChild(node.firstChild);\r\n\t\t\t}\r\n\t\t\tnode.appendChild(content);\r\n\t\t}\r\n\t\tthis.fire('contentupdate');\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n\t\t    offset = toPoint(this.options.offset),\r\n\t\t    anchor = this._getAnchor();\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t\t} else {\r\n\t\t\toffset = offset.add(pos).add(anchor);\r\n\t\t}\r\n\r\n\t\tvar bottom = this._containerBottom = -offset.y,\r\n\t\t    left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n\t\t// bottom position the popup in case the height of the popup changes (images loading etc)\r\n\t\tthis._container.style.bottom = bottom + 'px';\r\n\t\tthis._container.style.left = left + 'px';\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\treturn [0, 0];\r\n\t}\r\n\r\n});\r\n","import {DivOverlay} from './DivOverlay';\r\nimport * as DomEvent from '../dom/DomEvent';\r\nimport * as DomUtil from '../dom/DomUtil';\r\nimport {Point, toPoint} from '../geometry/Point';\r\nimport {Map} from '../map/Map';\r\nimport {Layer} from './Layer';\r\nimport * as Util from '../core/Util';\r\nimport {Path} from './vector/Path';\r\n\r\n/*\r\n * @class Popup\r\n * @inherits DivOverlay\r\n * @aka L.Popup\r\n * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n * open popups while making sure that only one popup is open at one time\r\n * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n *\r\n * @example\r\n *\r\n * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n *\r\n * ```js\r\n * marker.bindPopup(popupContent).openPopup();\r\n * ```\r\n * Path overlays like polylines also have a `bindPopup` method.\r\n * Here's a more complicated way to open a popup on a map:\r\n *\r\n * ```js\r\n * var popup = L.popup()\r\n * \t.setLatLng(latlng)\r\n * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n */\r\n\r\n\r\n// @namespace Popup\r\nexport var Popup = DivOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka Popup options\r\n\toptions: {\r\n\t\t// @option maxWidth: Number = 300\r\n\t\t// Max width of the popup, in pixels.\r\n\t\tmaxWidth: 300,\r\n\r\n\t\t// @option minWidth: Number = 50\r\n\t\t// Min width of the popup, in pixels.\r\n\t\tminWidth: 50,\r\n\r\n\t\t// @option maxHeight: Number = null\r\n\t\t// If set, creates a scrollable container of the given height\r\n\t\t// inside a popup if its content exceeds it.\r\n\t\tmaxHeight: null,\r\n\r\n\t\t// @option autoPan: Boolean = true\r\n\t\t// Set it to `false` if you don't want the map to do panning animation\r\n\t\t// to fit the opened popup.\r\n\t\tautoPan: true,\r\n\r\n\t\t// @option autoPanPaddingTopLeft: Point = null\r\n\t\t// The margin between the popup and the top left corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingTopLeft: null,\r\n\r\n\t\t// @option autoPanPaddingBottomRight: Point = null\r\n\t\t// The margin between the popup and the bottom right corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingBottomRight: null,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(5, 5)\r\n\t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n\t\tautoPanPadding: [5, 5],\r\n\r\n\t\t// @option keepInView: Boolean = false\r\n\t\t// Set it to `true` if you want to prevent users from panning the popup\r\n\t\t// off of the screen while it is open.\r\n\t\tkeepInView: false,\r\n\r\n\t\t// @option closeButton: Boolean = true\r\n\t\t// Controls the presence of a close button in the popup.\r\n\t\tcloseButton: true,\r\n\r\n\t\t// @option autoClose: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the popup closing when another popup is opened.\r\n\t\tautoClose: true,\r\n\r\n\t\t// @option closeOnEscapeKey: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the ESC key for closing of the popup.\r\n\t\tcloseOnEscapeKey: true,\r\n\r\n\t\t// @option closeOnClick: Boolean = *\r\n\t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n\t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method openOn(map: Map): this\r\n\t// Adds the popup to the map and closes the previous one. The same as `map.openPopup(popup)`.\r\n\topenOn: function (map) {\r\n\t\tmap.openPopup(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupopen: PopupEvent\r\n\t\t// Fired when a popup is opened in the map\r\n\t\tmap.fire('popupopen', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupopen: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is opened\r\n\t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n\t\t\t// For non-path layers, we toggle the popup when clicking\r\n\t\t\t// again the layer, so prevent the map to reopen it.\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.on('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupclose: PopupEvent\r\n\t\t// Fired when a popup in the map is closed\r\n\t\tmap.fire('popupclose', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupclose: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is closed\r\n\t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.off('preclick', DomEvent.stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n\t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n\t\t\tevents.preclick = this._close;\r\n\t\t}\r\n\r\n\t\tif (this.options.keepInView) {\r\n\t\t\tevents.moveend = this._adjustPan;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t_close: function () {\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.closePopup(this);\r\n\t\t}\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar prefix = 'leaflet-popup',\r\n\t\t    container = this._container = DomUtil.create('div',\r\n\t\t\tprefix + ' ' + (this.options.className || '') +\r\n\t\t\t' leaflet-zoom-animated');\r\n\r\n\t\tvar wrapper = this._wrapper = DomUtil.create('div', prefix + '-content-wrapper', container);\r\n\t\tthis._contentNode = DomUtil.create('div', prefix + '-content', wrapper);\r\n\r\n\t\tDomEvent.disableClickPropagation(container);\r\n\t\tDomEvent.disableScrollPropagation(this._contentNode);\r\n\t\tDomEvent.on(container, 'contextmenu', DomEvent.stopPropagation);\r\n\r\n\t\tthis._tipContainer = DomUtil.create('div', prefix + '-tip-container', container);\r\n\t\tthis._tip = DomUtil.create('div', prefix + '-tip', this._tipContainer);\r\n\r\n\t\tif (this.options.closeButton) {\r\n\t\t\tvar closeButton = this._closeButton = DomUtil.create('a', prefix + '-close-button', container);\r\n\t\t\tcloseButton.href = '#close';\r\n\t\t\tcloseButton.innerHTML = '&#215;';\r\n\r\n\t\t\tDomEvent.on(closeButton, 'click', this._onCloseButtonClick, this);\r\n\t\t}\r\n\t},\r\n\r\n\t_updateLayout: function () {\r\n\t\tvar container = this._contentNode,\r\n\t\t    style = container.style;\r\n\r\n\t\tstyle.width = '';\r\n\t\tstyle.whiteSpace = 'nowrap';\r\n\r\n\t\tvar width = container.offsetWidth;\r\n\t\twidth = Math.min(width, this.options.maxWidth);\r\n\t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n\t\tstyle.width = (width + 1) + 'px';\r\n\t\tstyle.whiteSpace = '';\r\n\r\n\t\tstyle.height = '';\r\n\r\n\t\tvar height = container.offsetHeight,\r\n\t\t    maxHeight = this.options.maxHeight,\r\n\t\t    scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n\t\tif (maxHeight && height > maxHeight) {\r\n\t\t\tstyle.height = maxHeight + 'px';\r\n\t\t\tDomUtil.addClass(container, scrolledClass);\r\n\t\t} else {\r\n\t\t\tDomUtil.removeClass(container, scrolledClass);\r\n\t\t}\r\n\r\n\t\tthis._containerWidth = this._container.offsetWidth;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n\t\t    anchor = this._getAnchor();\r\n\t\tDomUtil.setPosition(this._container, pos.add(anchor));\r\n\t},\r\n\r\n\t_adjustPan: function () {\r\n\t\tif (!this.options.autoPan) { return; }\r\n\t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n\t\tvar map = this._map,\r\n\t\t    marginBottom = parseInt(DomUtil.getStyle(this._container, 'marginBottom'), 10) || 0,\r\n\t\t    containerHeight = this._container.offsetHeight + marginBottom,\r\n\t\t    containerWidth = this._containerWidth,\r\n\t\t    layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n\t\tlayerPos._add(DomUtil.getPosition(this._container));\r\n\r\n\t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n\t\t    padding = toPoint(this.options.autoPanPadding),\r\n\t\t    paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n\t\t    paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n\t\t    size = map.getSize(),\r\n\t\t    dx = 0,\r\n\t\t    dy = 0;\r\n\r\n\t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n\t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n\t\t}\r\n\t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n\t\t\tdx = containerPos.x - paddingTL.x;\r\n\t\t}\r\n\t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n\t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n\t\t}\r\n\t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n\t\t\tdy = containerPos.y - paddingTL.y;\r\n\t\t}\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event autopanstart: Event\r\n\t\t// Fired when the map starts autopanning when opening a popup.\r\n\t\tif (dx || dy) {\r\n\t\t\tmap\r\n\t\t\t    .fire('autopanstart')\r\n\t\t\t    .panBy([dx, dy]);\r\n\t\t}\r\n\t},\r\n\r\n\t_onCloseButtonClick: function (e) {\r\n\t\tthis._close();\r\n\t\tDomEvent.stop(e);\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\t// Where should we anchor the popup on the source layer?\r\n\t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n\t}\r\n\r\n});\r\n\r\n// @namespace Popup\r\n// @factory L.popup(options?: Popup options, source?: Layer)\r\n// Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\nexport var popup = function (options, source) {\r\n\treturn new Popup(options, source);\r\n};\r\n\r\n\r\n/* @namespace Map\r\n * @section Interaction Options\r\n * @option closePopupOnClick: Boolean = true\r\n * Set it to `false` if you don't want popups to close when user clicks the map.\r\n */\r\nMap.mergeOptions({\r\n\tclosePopupOnClick: true\r\n});\r\n\r\n\r\n// @namespace Map\r\n// @section Methods for Layers and Controls\r\nMap.include({\r\n\t// @method openPopup(popup: Popup): this\r\n\t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n\t// @alternative\r\n\t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n\t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n\topenPopup: function (popup, latlng, options) {\r\n\t\tif (!(popup instanceof Popup)) {\r\n\t\t\tpopup = new Popup(options).setContent(popup);\r\n\t\t}\r\n\r\n\t\tif (latlng) {\r\n\t\t\tpopup.setLatLng(latlng);\r\n\t\t}\r\n\r\n\t\tif (this.hasLayer(popup)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (this._popup && this._popup.options.autoClose) {\r\n\t\t\tthis.closePopup();\r\n\t\t}\r\n\r\n\t\tthis._popup = popup;\r\n\t\treturn this.addLayer(popup);\r\n\t},\r\n\r\n\t// @method closePopup(popup?: Popup): this\r\n\t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n\tclosePopup: function (popup) {\r\n\t\tif (!popup || popup === this._popup) {\r\n\t\t\tpopup = this._popup;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\tif (popup) {\r\n\t\t\tthis.removeLayer(popup);\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/*\r\n * @namespace Layer\r\n * @section Popup methods example\r\n *\r\n * All layers share a set of methods convenient for binding popups to it.\r\n *\r\n * ```js\r\n * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n * layer.openPopup();\r\n * layer.closePopup();\r\n * ```\r\n *\r\n * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n */\r\n\r\n// @section Popup methods\r\nLayer.include({\r\n\r\n\t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n\t// Binds a popup to the layer with the passed `content` and sets up the\r\n\t// necessary event listeners. If a `Function` is passed it will receive\r\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n\tbindPopup: function (content, options) {\r\n\r\n\t\tif (content instanceof Popup) {\r\n\t\t\tUtil.setOptions(content, options);\r\n\t\t\tthis._popup = content;\r\n\t\t\tcontent._source = this;\r\n\t\t} else {\r\n\t\t\tif (!this._popup || options) {\r\n\t\t\t\tthis._popup = new Popup(options, this);\r\n\t\t\t}\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\r\n\t\tif (!this._popupHandlersAdded) {\r\n\t\t\tthis.on({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = true;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method unbindPopup(): this\r\n\t// Removes the popup previously bound with `bindPopup`.\r\n\tunbindPopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis.off({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = false;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method openPopup(latlng?: LatLng): this\r\n\t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n\topenPopup: function (layer, latlng) {\r\n\t\tif (this._popup && this._map) {\r\n\t\t\tlatlng = this._popup._prepareOpen(this, layer, latlng);\r\n\r\n\t\t\t// open the popup on the map\r\n\t\t\tthis._map.openPopup(this._popup, latlng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(): this\r\n\t// Closes the popup bound to this layer if it is open.\r\n\tclosePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup._close();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method togglePopup(): this\r\n\t// Opens or closes the popup bound to this layer depending on its current state.\r\n\ttogglePopup: function (target) {\r\n\t\tif (this._popup) {\r\n\t\t\tif (this._popup._map) {\r\n\t\t\t\tthis.closePopup();\r\n\t\t\t} else {\r\n\t\t\t\tthis.openPopup(target);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method isPopupOpen(): boolean\r\n\t// Returns `true` if the popup bound to this layer is currently open.\r\n\tisPopupOpen: function () {\r\n\t\treturn (this._popup ? this._popup.isOpen() : false);\r\n\t},\r\n\r\n\t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n\t// Sets the content of the popup bound to this layer.\r\n\tsetPopupContent: function (content) {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getPopup(): Popup\r\n\t// Returns the popup bound to this layer.\r\n\tgetPopup: function () {\r\n\t\treturn this._popup;\r\n\t},\r\n\r\n\t_openPopup: function (e) {\r\n\t\tvar layer = e.layer || e.target;\r\n\r\n\t\tif (!this._popup) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._map) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// prevent map click\r\n\t\tDomEvent.stop(e);\r\n\r\n\t\t// if this inherits from Path its a vector and we can just\r\n\t\t// open the popup at the new location\r\n\t\tif (layer instanceof Path) {\r\n\t\t\tthis.openPopup(e.layer || e.target, e.latlng);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// otherwise treat it like a marker and figure out\r\n\t\t// if we should toggle it open/closed\r\n\t\tif (this._map.hasLayer(this._popup) && this._popup._source === layer) {\r\n\t\t\tthis.closePopup();\r\n\t\t} else {\r\n\t\t\tthis.openPopup(layer, e.latlng);\r\n\t\t}\r\n\t},\r\n\r\n\t_movePopup: function (e) {\r\n\t\tthis._popup.setLatLng(e.latlng);\r\n\t},\r\n\r\n\t_onKeyPress: function (e) {\r\n\t\tif (e.originalEvent.keyCode === 13) {\r\n\t\t\tthis._openPopup(e);\r\n\t\t}\r\n\t}\r\n});\r\n","\nimport * as Browser from '../core/Browser';\nimport {DivOverlay} from './DivOverlay';\nimport {toPoint} from '../geometry/Point';\nimport {Map} from '../map/Map';\nimport {Layer} from './Layer';\nimport * as Util from '../core/Util';\nimport * as DomUtil from '../dom/DomUtil';\n\n/*\n * @class Tooltip\n * @inherits DivOverlay\n * @aka L.Tooltip\n * Used to display small texts on top of map layers.\n *\n * @example\n *\n * ```js\n * marker.bindTooltip(\"my tooltip text\").openTooltip();\n * ```\n * Note about tooltip offset. Leaflet takes two options in consideration\n * for computing tooltip offsetting:\n * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n *   Add a positive x offset to move the tooltip to the right, and a positive y offset to\n *   move it to the bottom. Negatives will move to the left and top.\n * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n *   should adapt this value if you use a custom icon.\n */\n\n\n// @namespace Tooltip\nexport var Tooltip = DivOverlay.extend({\n\n\t// @section\n\t// @aka Tooltip options\n\toptions: {\n\t\t// @option pane: String = 'tooltipPane'\n\t\t// `Map pane` where the tooltip will be added.\n\t\tpane: 'tooltipPane',\n\n\t\t// @option offset: Point = Point(0, 0)\n\t\t// Optional offset of the tooltip position.\n\t\toffset: [0, 0],\n\n\t\t// @option direction: String = 'auto'\n\t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n\t\t// `top`, `bottom`, `center`, `auto`.\n\t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n\t\t// position on the map.\n\t\tdirection: 'auto',\n\n\t\t// @option permanent: Boolean = false\n\t\t// Whether to open the tooltip permanently or only on mouseover.\n\t\tpermanent: false,\n\n\t\t// @option sticky: Boolean = false\n\t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n\t\tsticky: false,\n\n\t\t// @option interactive: Boolean = false\n\t\t// If true, the tooltip will listen to the feature events.\n\t\tinteractive: false,\n\n\t\t// @option opacity: Number = 0.9\n\t\t// Tooltip container opacity.\n\t\topacity: 0.9\n\t},\n\n\tonAdd: function (map) {\n\t\tDivOverlay.prototype.onAdd.call(this, map);\n\t\tthis.setOpacity(this.options.opacity);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipopen: TooltipEvent\n\t\t// Fired when a tooltip is opened in the map.\n\t\tmap.fire('tooltipopen', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipopen: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is opened.\n\t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tonRemove: function (map) {\n\t\tDivOverlay.prototype.onRemove.call(this, map);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipclose: TooltipEvent\n\t\t// Fired when a tooltip in the map is closed.\n\t\tmap.fire('tooltipclose', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipclose: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is closed.\n\t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n\t\tif (Browser.touch && !this.options.permanent) {\n\t\t\tevents.preclick = this._close;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t_close: function () {\n\t\tif (this._map) {\n\t\t\tthis._map.closeTooltip(this);\n\t\t}\n\t},\n\n\t_initLayout: function () {\n\t\tvar prefix = 'leaflet-tooltip',\n\t\t    className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n\t\tthis._contentNode = this._container = DomUtil.create('div', className);\n\t},\n\n\t_updateLayout: function () {},\n\n\t_adjustPan: function () {},\n\n\t_setPosition: function (pos) {\n\t\tvar subX, subY,\n\t\t    map = this._map,\n\t\t    container = this._container,\n\t\t    centerPoint = map.latLngToContainerPoint(map.getCenter()),\n\t\t    tooltipPoint = map.layerPointToContainerPoint(pos),\n\t\t    direction = this.options.direction,\n\t\t    tooltipWidth = container.offsetWidth,\n\t\t    tooltipHeight = container.offsetHeight,\n\t\t    offset = toPoint(this.options.offset),\n\t\t    anchor = this._getAnchor();\n\n\t\tif (direction === 'top') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight;\n\t\t} else if (direction === 'bottom') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = 0;\n\t\t} else if (direction === 'center') {\n\t\t\tsubX = tooltipWidth / 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'right') {\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (direction === 'left') {\n\t\t\tsubX = tooltipWidth;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else if (tooltipPoint.x < centerPoint.x) {\n\t\t\tdirection = 'right';\n\t\t\tsubX = 0;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t} else {\n\t\t\tdirection = 'left';\n\t\t\tsubX = tooltipWidth + (offset.x + anchor.x) * 2;\n\t\t\tsubY = tooltipHeight / 2;\n\t\t}\n\n\t\tpos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);\n\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-right');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-left');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-top');\n\t\tDomUtil.removeClass(container, 'leaflet-tooltip-bottom');\n\t\tDomUtil.addClass(container, 'leaflet-tooltip-' + direction);\n\t\tDomUtil.setPosition(container, pos);\n\t},\n\n\t_updatePosition: function () {\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._setPosition(pos);\n\t},\n\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\n\t\tif (this._container) {\n\t\t\tDomUtil.setOpacity(this._container, opacity);\n\t\t}\n\t},\n\n\t_animateZoom: function (e) {\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n\t\tthis._setPosition(pos);\n\t},\n\n\t_getAnchor: function () {\n\t\t// Where should we anchor the tooltip on the source layer?\n\t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n\t}\n\n});\n\n// @namespace Tooltip\n// @factory L.tooltip(options?: Tooltip options, source?: Layer)\n// Instantiates a Tooltip object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\nexport var tooltip = function (options, source) {\n\treturn new Tooltip(options, source);\n};\n\n// @namespace Map\n// @section Methods for Layers and Controls\nMap.include({\n\n\t// @method openTooltip(tooltip: Tooltip): this\n\t// Opens the specified tooltip.\n\t// @alternative\n\t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n\t// Creates a tooltip with the specified content and options and open it.\n\topenTooltip: function (tooltip, latlng, options) {\n\t\tif (!(tooltip instanceof Tooltip)) {\n\t\t\ttooltip = new Tooltip(options).setContent(tooltip);\n\t\t}\n\n\t\tif (latlng) {\n\t\t\ttooltip.setLatLng(latlng);\n\t\t}\n\n\t\tif (this.hasLayer(tooltip)) {\n\t\t\treturn this;\n\t\t}\n\n\t\treturn this.addLayer(tooltip);\n\t},\n\n\t// @method closeTooltip(tooltip?: Tooltip): this\n\t// Closes the tooltip given as parameter.\n\tcloseTooltip: function (tooltip) {\n\t\tif (tooltip) {\n\t\t\tthis.removeLayer(tooltip);\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\n/*\n * @namespace Layer\n * @section Tooltip methods example\n *\n * All layers share a set of methods convenient for binding tooltips to it.\n *\n * ```js\n * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n * layer.openTooltip();\n * layer.closeTooltip();\n * ```\n */\n\n// @section Tooltip methods\nLayer.include({\n\n\t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n\t// Binds a tooltip to the layer with the passed `content` and sets up the\n\t// necessary event listeners. If a `Function` is passed it will receive\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\n\tbindTooltip: function (content, options) {\n\n\t\tif (content instanceof Tooltip) {\n\t\t\tUtil.setOptions(content, options);\n\t\t\tthis._tooltip = content;\n\t\t\tcontent._source = this;\n\t\t} else {\n\t\t\tif (!this._tooltip || options) {\n\t\t\t\tthis._tooltip = new Tooltip(options, this);\n\t\t\t}\n\t\t\tthis._tooltip.setContent(content);\n\n\t\t}\n\n\t\tthis._initTooltipInteractions();\n\n\t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n\t\t\tthis.openTooltip();\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method unbindTooltip(): this\n\t// Removes the tooltip previously bound with `bindTooltip`.\n\tunbindTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._initTooltipInteractions(true);\n\t\t\tthis.closeTooltip();\n\t\t\tthis._tooltip = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_initTooltipInteractions: function (remove) {\n\t\tif (!remove && this._tooltipHandlersAdded) { return; }\n\t\tvar onOff = remove ? 'off' : 'on',\n\t\t    events = {\n\t\t\tremove: this.closeTooltip,\n\t\t\tmove: this._moveTooltip\n\t\t    };\n\t\tif (!this._tooltip.options.permanent) {\n\t\t\tevents.mouseover = this._openTooltip;\n\t\t\tevents.mouseout = this.closeTooltip;\n\t\t\tif (this._tooltip.options.sticky) {\n\t\t\t\tevents.mousemove = this._moveTooltip;\n\t\t\t}\n\t\t\tif (Browser.touch) {\n\t\t\t\tevents.click = this._openTooltip;\n\t\t\t}\n\t\t} else {\n\t\t\tevents.add = this._openTooltip;\n\t\t}\n\t\tthis[onOff](events);\n\t\tthis._tooltipHandlersAdded = !remove;\n\t},\n\n\t// @method openTooltip(latlng?: LatLng): this\n\t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n\topenTooltip: function (layer, latlng) {\n\t\tif (this._tooltip && this._map) {\n\t\t\tlatlng = this._tooltip._prepareOpen(this, layer, latlng);\n\n\t\t\t// open the tooltip on the map\n\t\t\tthis._map.openTooltip(this._tooltip, latlng);\n\n\t\t\t// Tooltip container may not be defined if not permanent and never\n\t\t\t// opened.\n\t\t\tif (this._tooltip.options.interactive && this._tooltip._container) {\n\t\t\t\tDomUtil.addClass(this._tooltip._container, 'leaflet-clickable');\n\t\t\t\tthis.addInteractiveTarget(this._tooltip._container);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(): this\n\t// Closes the tooltip bound to this layer if it is open.\n\tcloseTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip._close();\n\t\t\tif (this._tooltip.options.interactive && this._tooltip._container) {\n\t\t\t\tDomUtil.removeClass(this._tooltip._container, 'leaflet-clickable');\n\t\t\t\tthis.removeInteractiveTarget(this._tooltip._container);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method toggleTooltip(): this\n\t// Opens or closes the tooltip bound to this layer depending on its current state.\n\ttoggleTooltip: function (target) {\n\t\tif (this._tooltip) {\n\t\t\tif (this._tooltip._map) {\n\t\t\t\tthis.closeTooltip();\n\t\t\t} else {\n\t\t\t\tthis.openTooltip(target);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method isTooltipOpen(): boolean\n\t// Returns `true` if the tooltip bound to this layer is currently open.\n\tisTooltipOpen: function () {\n\t\treturn this._tooltip.isOpen();\n\t},\n\n\t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n\t// Sets the content of the tooltip bound to this layer.\n\tsetTooltipContent: function (content) {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.setContent(content);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getTooltip(): Tooltip\n\t// Returns the tooltip bound to this layer.\n\tgetTooltip: function () {\n\t\treturn this._tooltip;\n\t},\n\n\t_openTooltip: function (e) {\n\t\tvar layer = e.layer || e.target;\n\n\t\tif (!this._tooltip || !this._map) {\n\t\t\treturn;\n\t\t}\n\t\tthis.openTooltip(layer, this._tooltip.options.sticky ? e.latlng : undefined);\n\t},\n\n\t_moveTooltip: function (e) {\n\t\tvar latlng = e.latlng, containerPoint, layerPoint;\n\t\tif (this._tooltip.options.sticky && e.originalEvent) {\n\t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n\t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n\t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n\t\t}\n\t\tthis._tooltip.setLatLng(latlng);\n\t}\n});\n","import {Icon} from './Icon';\nimport {toPoint as point} from '../../geometry/Point';\nimport {empty} from '../../dom/DomUtil';\n\n/*\n * @class DivIcon\n * @aka L.DivIcon\n * @inherits Icon\n *\n * Represents a lightweight icon for markers that uses a simple `<div>`\n * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n *\n * @example\n * ```js\n * var myIcon = L.divIcon({className: 'my-div-icon'});\n * // you can set .my-div-icon styles in CSS\n *\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n * ```\n *\n * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n */\n\nexport var DivIcon = Icon.extend({\n\toptions: {\n\t\t// @section\n\t\t// @aka DivIcon options\n\t\ticonSize: [12, 12], // also can be set through CSS\n\n\t\t// iconAnchor: (Point),\n\t\t// popupAnchor: (Point),\n\n\t\t// @option html: String|HTMLElement = ''\n\t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n\t\t// an instance of `HTMLElement`.\n\t\thtml: false,\n\n\t\t// @option bgPos: Point = [0, 0]\n\t\t// Optional relative position of the background, in pixels\n\t\tbgPos: null,\n\n\t\tclassName: 'leaflet-div-icon'\n\t},\n\n\tcreateIcon: function (oldIcon) {\n\t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n\t\t    options = this.options;\n\n\t\tif (options.html instanceof Element) {\n\t\t\tempty(div);\n\t\t\tdiv.appendChild(options.html);\n\t\t} else {\n\t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n\t\t}\n\n\t\tif (options.bgPos) {\n\t\t\tvar bgPos = point(options.bgPos);\n\t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n\t\t}\n\t\tthis._setIconStyles(div, 'icon');\n\n\t\treturn div;\n\t},\n\n\tcreateShadow: function () {\n\t\treturn null;\n\t}\n});\n\n// @factory L.divIcon(options: DivIcon options)\n// Creates a `DivIcon` instance with the given options.\nexport function divIcon(options) {\n\treturn new DivIcon(options);\n}\n","import {Icon} from './Icon';\nexport {icon} from './Icon';\nimport {IconDefault} from './Icon.Default';\nIcon.Default = IconDefault;\nexport {Icon};\n\nexport {DivIcon, divIcon} from './DivIcon';\nexport {Marker, marker} from './Marker';\n","import {Layer} from '../Layer';\nimport * as Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {Point} from '../../geometry/Point';\nimport {Bounds} from '../../geometry/Bounds';\nimport {LatLngBounds, toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * @class GridLayer\n * @inherits Layer\n * @aka L.GridLayer\n *\n * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n *\n *\n * @section Synchronous usage\n * @example\n *\n * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords){\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n *         var ctx = tile.getContext('2d');\n *\n *         // return the tile so it can be rendered on screen\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section Asynchronous usage\n * @example\n *\n * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords, done){\n *         var error;\n *\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // draw something asynchronously and pass the tile to the done() callback\n *         setTimeout(function() {\n *             done(error, tile);\n *         }, 1000);\n *\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section\n */\n\n\nexport var GridLayer = Layer.extend({\n\n\t// @section\n\t// @aka GridLayer options\n\toptions: {\n\t\t// @option tileSize: Number|Point = 256\n\t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n\t\ttileSize: 256,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n\t\topacity: 1,\n\n\t\t// @option updateWhenIdle: Boolean = (depends)\n\t\t// Load new tiles only when panning ends.\n\t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n\t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n\t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n\t\tupdateWhenIdle: Browser.mobile,\n\n\t\t// @option updateWhenZooming: Boolean = true\n\t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n\t\tupdateWhenZooming: true,\n\n\t\t// @option updateInterval: Number = 200\n\t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n\t\tupdateInterval: 200,\n\n\t\t// @option zIndex: Number = 1\n\t\t// The explicit zIndex of the tile layer.\n\t\tzIndex: 1,\n\n\t\t// @option bounds: LatLngBounds = undefined\n\t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n\t\tbounds: null,\n\n\t\t// @option minZoom: Number = 0\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n\t\tminZoom: 0,\n\n\t\t// @option maxZoom: Number = undefined\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n\t\tmaxZoom: undefined,\n\n\t\t// @option maxNativeZoom: Number = undefined\n\t\t// Maximum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n\t\t// from `maxNativeZoom` level and auto-scaled.\n\t\tmaxNativeZoom: undefined,\n\n\t\t// @option minNativeZoom: Number = undefined\n\t\t// Minimum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n\t\t// from `minNativeZoom` level and auto-scaled.\n\t\tminNativeZoom: undefined,\n\n\t\t// @option noWrap: Boolean = false\n\t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n\t\t// GridLayer will only be displayed once at low zoom levels. Has no\n\t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n\t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n\t\t// tiles outside the CRS limits.\n\t\tnoWrap: false,\n\n\t\t// @option pane: String = 'tilePane'\n\t\t// `Map pane` where the grid layer will be added.\n\t\tpane: 'tilePane',\n\n\t\t// @option className: String = ''\n\t\t// A custom class name to assign to the tile layer. Empty by default.\n\t\tclassName: '',\n\n\t\t// @option keepBuffer: Number = 2\n\t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n\t\tkeepBuffer: 2\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t},\n\n\tonAdd: function () {\n\t\tthis._initContainer();\n\n\t\tthis._levels = {};\n\t\tthis._tiles = {};\n\n\t\tthis._resetView();\n\t\tthis._update();\n\t},\n\n\tbeforeAdd: function (map) {\n\t\tmap._addZoomLimit(this);\n\t},\n\n\tonRemove: function (map) {\n\t\tthis._removeAllTiles();\n\t\tDomUtil.remove(this._container);\n\t\tmap._removeZoomLimit(this);\n\t\tthis._container = null;\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t// @method bringToFront: this\n\t// Brings the tile layer to the top of all tile layers.\n\tbringToFront: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toFront(this._container);\n\t\t\tthis._setAutoZIndex(Math.max);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack: this\n\t// Brings the tile layer to the bottom of all tile layers.\n\tbringToBack: function () {\n\t\tif (this._map) {\n\t\t\tDomUtil.toBack(this._container);\n\t\t\tthis._setAutoZIndex(Math.min);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getContainer: HTMLElement\n\t// Returns the HTML element that contains the tiles for this layer.\n\tgetContainer: function () {\n\t\treturn this._container;\n\t},\n\n\t// @method setOpacity(opacity: Number): this\n\t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\t\tthis._updateOpacity();\n\t\treturn this;\n\t},\n\n\t// @method setZIndex(zIndex: Number): this\n\t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n\tsetZIndex: function (zIndex) {\n\t\tthis.options.zIndex = zIndex;\n\t\tthis._updateZIndex();\n\n\t\treturn this;\n\t},\n\n\t// @method isLoading: Boolean\n\t// Returns `true` if any tile in the grid layer has not finished loading.\n\tisLoading: function () {\n\t\treturn this._loading;\n\t},\n\n\t// @method redraw: this\n\t// Causes the layer to clear all the tiles and request them again.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._removeAllTiles();\n\t\t\tthis._update();\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewprereset: this._invalidateAll,\n\t\t\tviewreset: this._resetView,\n\t\t\tzoom: this._resetView,\n\t\t\tmoveend: this._onMoveEnd\n\t\t};\n\n\t\tif (!this.options.updateWhenIdle) {\n\t\t\t// update tiles on move, but not more often than once per given interval\n\t\t\tif (!this._onMove) {\n\t\t\t\tthis._onMove = Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n\t\t\t}\n\n\t\t\tevents.move = this._onMove;\n\t\t}\n\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._animateZoom;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t// @section Extension methods\n\t// Layers extending `GridLayer` shall reimplement the following method.\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\n\t// Called only internally, must be overridden by classes extending `GridLayer`.\n\t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n\t// is specified, it must be called when the tile has finished loading and drawing.\n\tcreateTile: function () {\n\t\treturn document.createElement('div');\n\t},\n\n\t// @section\n\t// @method getTileSize: Point\n\t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n\tgetTileSize: function () {\n\t\tvar s = this.options.tileSize;\n\t\treturn s instanceof Point ? s : new Point(s, s);\n\t},\n\n\t_updateZIndex: function () {\n\t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n\t\t\tthis._container.style.zIndex = this.options.zIndex;\n\t\t}\n\t},\n\n\t_setAutoZIndex: function (compare) {\n\t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n\t\tvar layers = this.getPane().children,\n\t\t    edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n\t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n\t\t\tzIndex = layers[i].style.zIndex;\n\n\t\t\tif (layers[i] !== this._container && zIndex) {\n\t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n\t\t\t}\n\t\t}\n\n\t\tif (isFinite(edgeZIndex)) {\n\t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n\t\t\tthis._updateZIndex();\n\t\t}\n\t},\n\n\t_updateOpacity: function () {\n\t\tif (!this._map) { return; }\n\n\t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n\t\tif (Browser.ielt9) { return; }\n\n\t\tDomUtil.setOpacity(this._container, this.options.opacity);\n\n\t\tvar now = +new Date(),\n\t\t    nextFrame = false,\n\t\t    willPrune = false;\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar tile = this._tiles[key];\n\t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n\t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n\t\t\tDomUtil.setOpacity(tile.el, fade);\n\t\t\tif (fade < 1) {\n\t\t\t\tnextFrame = true;\n\t\t\t} else {\n\t\t\t\tif (tile.active) {\n\t\t\t\t\twillPrune = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis._onOpaqueTile(tile);\n\t\t\t\t}\n\t\t\t\ttile.active = true;\n\t\t\t}\n\t\t}\n\n\t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n\t\tif (nextFrame) {\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t}\n\t},\n\n\t_onOpaqueTile: Util.falseFn,\n\n\t_initContainer: function () {\n\t\tif (this._container) { return; }\n\n\t\tthis._container = DomUtil.create('div', 'leaflet-layer ' + (this.options.className || ''));\n\t\tthis._updateZIndex();\n\n\t\tif (this.options.opacity < 1) {\n\t\t\tthis._updateOpacity();\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t},\n\n\t_updateLevels: function () {\n\n\t\tvar zoom = this._tileZoom,\n\t\t    maxZoom = this.options.maxZoom;\n\n\t\tif (zoom === undefined) { return undefined; }\n\n\t\tfor (var z in this._levels) {\n\t\t\tz = Number(z);\n\t\t\tif (this._levels[z].el.children.length || z === zoom) {\n\t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n\t\t\t\tthis._onUpdateLevel(z);\n\t\t\t} else {\n\t\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\t\tthis._removeTilesAtZoom(z);\n\t\t\t\tthis._onRemoveLevel(z);\n\t\t\t\tdelete this._levels[z];\n\t\t\t}\n\t\t}\n\n\t\tvar level = this._levels[zoom],\n\t\t    map = this._map;\n\n\t\tif (!level) {\n\t\t\tlevel = this._levels[zoom] = {};\n\n\t\t\tlevel.el = DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n\t\t\tlevel.el.style.zIndex = maxZoom;\n\n\t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n\t\t\tlevel.zoom = zoom;\n\n\t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n\t\t\t// force the browser to consider the newly added element for transition\n\t\t\tUtil.falseFn(level.el.offsetWidth);\n\n\t\t\tthis._onCreateLevel(level);\n\t\t}\n\n\t\tthis._level = level;\n\n\t\treturn level;\n\t},\n\n\t_onUpdateLevel: Util.falseFn,\n\n\t_onRemoveLevel: Util.falseFn,\n\n\t_onCreateLevel: Util.falseFn,\n\n\t_pruneTiles: function () {\n\t\tif (!this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar key, tile;\n\n\t\tvar zoom = this._map.getZoom();\n\t\tif (zoom > this.options.maxZoom ||\n\t\t\tzoom < this.options.minZoom) {\n\t\t\tthis._removeAllTiles();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\ttile.retain = tile.current;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\tif (tile.current && !tile.active) {\n\t\t\t\tvar coords = tile.coords;\n\t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n\t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\tif (!this._tiles[key].retain) {\n\t\t\t\tthis._removeTile(key);\n\t\t\t}\n\t\t}\n\t},\n\n\t_removeTilesAtZoom: function (zoom) {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (this._tiles[key].coords.z !== zoom) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_removeAllTiles: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_invalidateAll: function () {\n\t\tfor (var z in this._levels) {\n\t\t\tDomUtil.remove(this._levels[z].el);\n\t\t\tthis._onRemoveLevel(Number(z));\n\t\t\tdelete this._levels[z];\n\t\t}\n\t\tthis._removeAllTiles();\n\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t_retainParent: function (x, y, z, minZoom) {\n\t\tvar x2 = Math.floor(x / 2),\n\t\t    y2 = Math.floor(y / 2),\n\t\t    z2 = z - 1,\n\t\t    coords2 = new Point(+x2, +y2);\n\t\tcoords2.z = +z2;\n\n\t\tvar key = this._tileCoordsToKey(coords2),\n\t\t    tile = this._tiles[key];\n\n\t\tif (tile && tile.active) {\n\t\t\ttile.retain = true;\n\t\t\treturn true;\n\n\t\t} else if (tile && tile.loaded) {\n\t\t\ttile.retain = true;\n\t\t}\n\n\t\tif (z2 > minZoom) {\n\t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_retainChildren: function (x, y, z, maxZoom) {\n\n\t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n\t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = z + 1;\n\n\t\t\t\tvar key = this._tileCoordsToKey(coords),\n\t\t\t\t    tile = this._tiles[key];\n\n\t\t\t\tif (tile && tile.active) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t} else if (tile && tile.loaded) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t}\n\n\t\t\t\tif (z + 1 < maxZoom) {\n\t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetView: function (e) {\n\t\tvar animating = e && (e.pinch || e.flyTo);\n\t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n\t},\n\n\t_animateZoom: function (e) {\n\t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n\t},\n\n\t_clampZoom: function (zoom) {\n\t\tvar options = this.options;\n\n\t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n\t\t\treturn options.minNativeZoom;\n\t\t}\n\n\t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n\t\t\treturn options.maxNativeZoom;\n\t\t}\n\n\t\treturn zoom;\n\t},\n\n\t_setView: function (center, zoom, noPrune, noUpdate) {\n\t\tvar tileZoom = Math.round(zoom);\n\t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n\t\t    (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n\t\t\ttileZoom = undefined;\n\t\t} else {\n\t\t\ttileZoom = this._clampZoom(tileZoom);\n\t\t}\n\n\t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n\t\tif (!noUpdate || tileZoomChanged) {\n\n\t\t\tthis._tileZoom = tileZoom;\n\n\t\t\tif (this._abortLoading) {\n\t\t\t\tthis._abortLoading();\n\t\t\t}\n\n\t\t\tthis._updateLevels();\n\t\t\tthis._resetGrid();\n\n\t\t\tif (tileZoom !== undefined) {\n\t\t\t\tthis._update(center);\n\t\t\t}\n\n\t\t\tif (!noPrune) {\n\t\t\t\tthis._pruneTiles();\n\t\t\t}\n\n\t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n\t\t\t// a zoom anim or a pinch gesture\n\t\t\tthis._noPrune = !!noPrune;\n\t\t}\n\n\t\tthis._setZoomTransforms(center, zoom);\n\t},\n\n\t_setZoomTransforms: function (center, zoom) {\n\t\tfor (var i in this._levels) {\n\t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n\t\t}\n\t},\n\n\t_setZoomTransform: function (level, center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n\t\t    translate = level.origin.multiplyBy(scale)\n\t\t        .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(level.el, translate, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(level.el, translate);\n\t\t}\n\t},\n\n\t_resetGrid: function () {\n\t\tvar map = this._map,\n\t\t    crs = map.options.crs,\n\t\t    tileSize = this._tileSize = this.getTileSize(),\n\t\t    tileZoom = this._tileZoom;\n\n\t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n\t\tif (bounds) {\n\t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n\t\t}\n\n\t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n\t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n\t\t];\n\t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n\t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n\t\t];\n\t},\n\n\t_onMoveEnd: function () {\n\t\tif (!this._map || this._map._animatingZoom) { return; }\n\n\t\tthis._update();\n\t},\n\n\t_getTiledPixelBounds: function (center) {\n\t\tvar map = this._map,\n\t\t    mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n\t\t    scale = map.getZoomScale(mapZoom, this._tileZoom),\n\t\t    pixelCenter = map.project(center, this._tileZoom).floor(),\n\t\t    halfSize = map.getSize().divideBy(scale * 2);\n\n\t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n\t},\n\n\t// Private method to load tiles in the grid's active zoom level according to map bounds\n\t_update: function (center) {\n\t\tvar map = this._map;\n\t\tif (!map) { return; }\n\t\tvar zoom = this._clampZoom(map.getZoom());\n\n\t\tif (center === undefined) { center = map.getCenter(); }\n\t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n\t\tvar pixelBounds = this._getTiledPixelBounds(center),\n\t\t    tileRange = this._pxBoundsToTileRange(pixelBounds),\n\t\t    tileCenter = tileRange.getCenter(),\n\t\t    queue = [],\n\t\t    margin = this.options.keepBuffer,\n\t\t    noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n\t\t                              tileRange.getTopRight().add([margin, -margin]));\n\n\t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n\t\tif (!(isFinite(tileRange.min.x) &&\n\t\t      isFinite(tileRange.min.y) &&\n\t\t      isFinite(tileRange.max.x) &&\n\t\t      isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar c = this._tiles[key].coords;\n\t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n\t\t\t\tthis._tiles[key].current = false;\n\t\t\t}\n\t\t}\n\n\t\t// _update just loads more tiles. If the tile zoom level differs too much\n\t\t// from the map's, let _setView reset levels and prune old tiles.\n\t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n\t\t// create a queue of coordinates to load tiles from\n\t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n\t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = this._tileZoom;\n\n\t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n\t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n\t\t\t\tif (tile) {\n\t\t\t\t\ttile.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push(coords);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort tile queue to load tiles in order of their distance to center\n\t\tqueue.sort(function (a, b) {\n\t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n\t\t});\n\n\t\tif (queue.length !== 0) {\n\t\t\t// if it's the first batch of tiles to load\n\t\t\tif (!this._loading) {\n\t\t\t\tthis._loading = true;\n\t\t\t\t// @event loading: Event\n\t\t\t\t// Fired when the grid layer starts loading tiles.\n\t\t\t\tthis.fire('loading');\n\t\t\t}\n\n\t\t\t// create DOM fragment to append tiles in one batch\n\t\t\tvar fragment = document.createDocumentFragment();\n\n\t\t\tfor (i = 0; i < queue.length; i++) {\n\t\t\t\tthis._addTile(queue[i], fragment);\n\t\t\t}\n\n\t\t\tthis._level.el.appendChild(fragment);\n\t\t}\n\t},\n\n\t_isValidTile: function (coords) {\n\t\tvar crs = this._map.options.crs;\n\n\t\tif (!crs.infinite) {\n\t\t\t// don't load tile if it's out of bounds and not wrapped\n\t\t\tvar bounds = this._globalTileRange;\n\t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n\t\t\t    (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n\t\t}\n\n\t\tif (!this.options.bounds) { return true; }\n\n\t\t// don't load tile if it doesn't intersect the bounds in options\n\t\tvar tileBounds = this._tileCoordsToBounds(coords);\n\t\treturn latLngBounds(this.options.bounds).overlaps(tileBounds);\n\t},\n\n\t_keyToBounds: function (key) {\n\t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n\t},\n\n\t_tileCoordsToNwSe: function (coords) {\n\t\tvar map = this._map,\n\t\t    tileSize = this.getTileSize(),\n\t\t    nwPoint = coords.scaleBy(tileSize),\n\t\t    sePoint = nwPoint.add(tileSize),\n\t\t    nw = map.unproject(nwPoint, coords.z),\n\t\t    se = map.unproject(sePoint, coords.z);\n\t\treturn [nw, se];\n\t},\n\n\t// converts tile coordinates to its geographical bounds\n\t_tileCoordsToBounds: function (coords) {\n\t\tvar bp = this._tileCoordsToNwSe(coords),\n\t\t    bounds = new LatLngBounds(bp[0], bp[1]);\n\n\t\tif (!this.options.noWrap) {\n\t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n\t\t}\n\t\treturn bounds;\n\t},\n\t// converts tile coordinates to key for the tile cache\n\t_tileCoordsToKey: function (coords) {\n\t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n\t},\n\n\t// converts tile cache key to coordinates\n\t_keyToTileCoords: function (key) {\n\t\tvar k = key.split(':'),\n\t\t    coords = new Point(+k[0], +k[1]);\n\t\tcoords.z = +k[2];\n\t\treturn coords;\n\t},\n\n\t_removeTile: function (key) {\n\t\tvar tile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\tDomUtil.remove(tile.el);\n\n\t\tdelete this._tiles[key];\n\n\t\t// @event tileunload: TileEvent\n\t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n\t\tthis.fire('tileunload', {\n\t\t\ttile: tile.el,\n\t\t\tcoords: this._keyToTileCoords(key)\n\t\t});\n\t},\n\n\t_initTile: function (tile) {\n\t\tDomUtil.addClass(tile, 'leaflet-tile');\n\n\t\tvar tileSize = this.getTileSize();\n\t\ttile.style.width = tileSize.x + 'px';\n\t\ttile.style.height = tileSize.y + 'px';\n\n\t\ttile.onselectstart = Util.falseFn;\n\t\ttile.onmousemove = Util.falseFn;\n\n\t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n\t\tif (Browser.ielt9 && this.options.opacity < 1) {\n\t\t\tDomUtil.setOpacity(tile, this.options.opacity);\n\t\t}\n\n\t\t// without this hack, tiles disappear after zoom on Chrome for Android\n\t\t// https://github.com/Leaflet/Leaflet/issues/2078\n\t\tif (Browser.android && !Browser.android23) {\n\t\t\ttile.style.WebkitBackfaceVisibility = 'hidden';\n\t\t}\n\t},\n\n\t_addTile: function (coords, container) {\n\t\tvar tilePos = this._getTilePos(coords),\n\t\t    key = this._tileCoordsToKey(coords);\n\n\t\tvar tile = this.createTile(this._wrapCoords(coords), Util.bind(this._tileReady, this, coords));\n\n\t\tthis._initTile(tile);\n\n\t\t// if createTile is defined with a second argument (\"done\" callback),\n\t\t// we know that tile is async and will be ready later; otherwise\n\t\tif (this.createTile.length < 2) {\n\t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n\t\t\tUtil.requestAnimFrame(Util.bind(this._tileReady, this, coords, null, tile));\n\t\t}\n\n\t\tDomUtil.setPosition(tile, tilePos);\n\n\t\t// save tile in cache\n\t\tthis._tiles[key] = {\n\t\t\tel: tile,\n\t\t\tcoords: coords,\n\t\t\tcurrent: true\n\t\t};\n\n\t\tcontainer.appendChild(tile);\n\t\t// @event tileloadstart: TileEvent\n\t\t// Fired when a tile is requested and starts loading.\n\t\tthis.fire('tileloadstart', {\n\t\t\ttile: tile,\n\t\t\tcoords: coords\n\t\t});\n\t},\n\n\t_tileReady: function (coords, err, tile) {\n\t\tif (err) {\n\t\t\t// @event tileerror: TileErrorEvent\n\t\t\t// Fired when there is an error loading a tile.\n\t\t\tthis.fire('tileerror', {\n\t\t\t\terror: err,\n\t\t\t\ttile: tile,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tvar key = this._tileCoordsToKey(coords);\n\n\t\ttile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\ttile.loaded = +new Date();\n\t\tif (this._map._fadeAnimated) {\n\t\t\tDomUtil.setOpacity(tile.el, 0);\n\t\t\tUtil.cancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = Util.requestAnimFrame(this._updateOpacity, this);\n\t\t} else {\n\t\t\ttile.active = true;\n\t\t\tthis._pruneTiles();\n\t\t}\n\n\t\tif (!err) {\n\t\t\tDomUtil.addClass(tile.el, 'leaflet-tile-loaded');\n\n\t\t\t// @event tileload: TileEvent\n\t\t\t// Fired when a tile loads.\n\t\t\tthis.fire('tileload', {\n\t\t\t\ttile: tile.el,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tif (this._noTilesToLoad()) {\n\t\t\tthis._loading = false;\n\t\t\t// @event load: Event\n\t\t\t// Fired when the grid layer loaded all visible tiles.\n\t\t\tthis.fire('load');\n\n\t\t\tif (Browser.ielt9 || !this._map._fadeAnimated) {\n\t\t\t\tUtil.requestAnimFrame(this._pruneTiles, this);\n\t\t\t} else {\n\t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n\t\t\t\t// to trigger a pruning.\n\t\t\t\tsetTimeout(Util.bind(this._pruneTiles, this), 250);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getTilePos: function (coords) {\n\t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n\t},\n\n\t_wrapCoords: function (coords) {\n\t\tvar newCoords = new Point(\n\t\t\tthis._wrapX ? Util.wrapNum(coords.x, this._wrapX) : coords.x,\n\t\t\tthis._wrapY ? Util.wrapNum(coords.y, this._wrapY) : coords.y);\n\t\tnewCoords.z = coords.z;\n\t\treturn newCoords;\n\t},\n\n\t_pxBoundsToTileRange: function (bounds) {\n\t\tvar tileSize = this.getTileSize();\n\t\treturn new Bounds(\n\t\t\tbounds.min.unscaleBy(tileSize).floor(),\n\t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n\t},\n\n\t_noTilesToLoad: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (!this._tiles[key].loaded) { return false; }\n\t\t}\n\t\treturn true;\n\t}\n});\n\n// @factory L.gridLayer(options?: GridLayer options)\n// Creates a new instance of GridLayer with the supplied options.\nexport function gridLayer(options) {\n\treturn new GridLayer(options);\n}\n","import {GridLayer} from './GridLayer';\r\nimport * as Browser from '../../core/Browser';\r\nimport * as Util from '../../core/Util';\r\nimport * as DomEvent from '../../dom/DomEvent';\r\nimport * as DomUtil from '../../dom/DomUtil';\r\n\r\n\r\n/*\r\n * @class TileLayer\r\n * @inherits GridLayer\r\n * @aka L.TileLayer\r\n * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: 'Map data &copy; <a href=\"https://www.openstreetmap.org/\">OpenStreetMap</a> contributors, <a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>'}).addTo(map);\r\n * ```\r\n *\r\n * @section URL template\r\n * @example\r\n *\r\n * A string of the following form:\r\n *\r\n * ```\r\n * 'http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n * ```\r\n *\r\n * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"&commat;2x\" to the URL to load retina tiles.\r\n *\r\n * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n *\r\n * ```\r\n * L.tileLayer('http://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n * ```\r\n */\r\n\r\n\r\nexport var TileLayer = GridLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer options\r\n\toptions: {\r\n\t\t// @option minZoom: Number = 0\r\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n\t\tminZoom: 0,\r\n\r\n\t\t// @option maxZoom: Number = 18\r\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n\t\tmaxZoom: 18,\r\n\r\n\t\t// @option subdomains: String|String[] = 'abc'\r\n\t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n\t\tsubdomains: 'abc',\r\n\r\n\t\t// @option errorTileUrl: String = ''\r\n\t\t// URL to the tile image to show in place of the tile that failed to load.\r\n\t\terrorTileUrl: '',\r\n\r\n\t\t// @option zoomOffset: Number = 0\r\n\t\t// The zoom number used in tile URLs will be offset with this value.\r\n\t\tzoomOffset: 0,\r\n\r\n\t\t// @option tms: Boolean = false\r\n\t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n\t\ttms: false,\r\n\r\n\t\t// @option zoomReverse: Boolean = false\r\n\t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n\t\tzoomReverse: false,\r\n\r\n\t\t// @option detectRetina: Boolean = false\r\n\t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n\t\tdetectRetina: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\toptions = Util.setOptions(this, options);\r\n\r\n\t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n\t\tif (options.detectRetina && Browser.retina && options.maxZoom > 0) {\r\n\r\n\t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n\t\t\tif (!options.zoomReverse) {\r\n\t\t\t\toptions.zoomOffset++;\r\n\t\t\t\toptions.maxZoom--;\r\n\t\t\t} else {\r\n\t\t\t\toptions.zoomOffset--;\r\n\t\t\t\toptions.minZoom++;\r\n\t\t\t}\r\n\r\n\t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n\t\t}\r\n\r\n\t\tif (typeof options.subdomains === 'string') {\r\n\t\t\toptions.subdomains = options.subdomains.split('');\r\n\t\t}\r\n\r\n\t\t// for https://github.com/Leaflet/Leaflet/issues/137\r\n\t\tif (!Browser.android) {\r\n\t\t\tthis.on('tileunload', this._onTileRemove);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n\t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n\t// If the URL does not change, the layer will not be redrawn unless\r\n\t// the noRedraw parameter is set to false.\r\n\tsetUrl: function (url, noRedraw) {\r\n\t\tif (this._url === url && noRedraw === undefined) {\r\n\t\t\tnoRedraw = true;\r\n\t\t}\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n\t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n\t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n\t// callback is called when the tile has been loaded.\r\n\tcreateTile: function (coords, done) {\r\n\t\tvar tile = document.createElement('img');\r\n\r\n\t\tDomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));\r\n\t\tDomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons\r\n\t\t http://www.w3.org/TR/WCAG20-TECHS/H67\r\n\t\t*/\r\n\t\ttile.alt = '';\r\n\r\n\t\t/*\r\n\t\t Set role=\"presentation\" to force screen readers to ignore this\r\n\t\t https://www.w3.org/TR/wai-aria/roles#textalternativecomputation\r\n\t\t*/\r\n\t\ttile.setAttribute('role', 'presentation');\r\n\r\n\t\ttile.src = this.getTileUrl(coords);\r\n\r\n\t\treturn tile;\r\n\t},\r\n\r\n\t// @section Extension methods\r\n\t// @uninheritable\r\n\t// Layers extending `TileLayer` might reimplement the following method.\r\n\t// @method getTileUrl(coords: Object): String\r\n\t// Called only internally, returns the URL for a tile given its coordinates.\r\n\t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n\tgetTileUrl: function (coords) {\r\n\t\tvar data = {\r\n\t\t\tr: Browser.retina ? '@2x' : '',\r\n\t\t\ts: this._getSubdomain(coords),\r\n\t\t\tx: coords.x,\r\n\t\t\ty: coords.y,\r\n\t\t\tz: this._getZoomForUrl()\r\n\t\t};\r\n\t\tif (this._map && !this._map.options.crs.infinite) {\r\n\t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n\t\t\tif (this.options.tms) {\r\n\t\t\t\tdata['y'] = invertedY;\r\n\t\t\t}\r\n\t\t\tdata['-y'] = invertedY;\r\n\t\t}\r\n\r\n\t\treturn Util.template(this._url, Util.extend(data, this.options));\r\n\t},\r\n\r\n\t_tileOnLoad: function (done, tile) {\r\n\t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n\t\tif (Browser.ielt9) {\r\n\t\t\tsetTimeout(Util.bind(done, this, null, tile), 0);\r\n\t\t} else {\r\n\t\t\tdone(null, tile);\r\n\t\t}\r\n\t},\r\n\r\n\t_tileOnError: function (done, tile, e) {\r\n\t\tvar errorUrl = this.options.errorTileUrl;\r\n\t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n\t\t\ttile.src = errorUrl;\r\n\t\t}\r\n\t\tdone(e, tile);\r\n\t},\r\n\r\n\t_onTileRemove: function (e) {\r\n\t\te.tile.onload = null;\r\n\t},\r\n\r\n\t_getZoomForUrl: function () {\r\n\t\tvar zoom = this._tileZoom,\r\n\t\tmaxZoom = this.options.maxZoom,\r\n\t\tzoomReverse = this.options.zoomReverse,\r\n\t\tzoomOffset = this.options.zoomOffset;\r\n\r\n\t\tif (zoomReverse) {\r\n\t\t\tzoom = maxZoom - zoom;\r\n\t\t}\r\n\r\n\t\treturn zoom + zoomOffset;\r\n\t},\r\n\r\n\t_getSubdomain: function (tilePoint) {\r\n\t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n\t\treturn this.options.subdomains[index];\r\n\t},\r\n\r\n\t// stops loading all tiles in the background layer\r\n\t_abortLoading: function () {\r\n\t\tvar i, tile;\r\n\t\tfor (i in this._tiles) {\r\n\t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n\t\t\t\ttile = this._tiles[i].el;\r\n\r\n\t\t\t\ttile.onload = Util.falseFn;\r\n\t\t\t\ttile.onerror = Util.falseFn;\r\n\r\n\t\t\t\tif (!tile.complete) {\r\n\t\t\t\t\ttile.src = Util.emptyImageUrl;\r\n\t\t\t\t\tDomUtil.remove(tile);\r\n\t\t\t\t\tdelete this._tiles[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_removeTile: function (key) {\r\n\t\tvar tile = this._tiles[key];\r\n\t\tif (!tile) { return; }\r\n\r\n\t\t// Cancels any pending http requests associated with the tile\r\n\t\t// unless we're on Android's stock browser,\r\n\t\t// see https://github.com/Leaflet/Leaflet/issues/137\r\n\t\tif (!Browser.androidStock) {\r\n\t\t\ttile.el.setAttribute('src', Util.emptyImageUrl);\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n\t},\r\n\r\n\t_tileReady: function (coords, err, tile) {\r\n\t\tif (!this._map || (tile && tile.getAttribute('src') === Util.emptyImageUrl)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n// Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\nexport function tileLayer(url, options) {\r\n\treturn new TileLayer(url, options);\r\n}\r\n","import {TileLayer} from './TileLayer';\r\nimport {extend, setOptions, getParamString} from '../../core/Util';\r\nimport {retina} from '../../core/Browser';\r\nimport {EPSG4326} from '../../geo/crs/CRS.EPSG4326';\r\nimport {toBounds} from '../../geometry/Bounds';\r\n\r\n/*\r\n * @class TileLayer.WMS\r\n * @inherits TileLayer\r\n * @aka L.TileLayer.WMS\r\n * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n * \tlayers: 'nexrad-n0r-900913',\r\n * \tformat: 'image/png',\r\n * \ttransparent: true,\r\n * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n * });\r\n * ```\r\n */\r\n\r\nexport var TileLayerWMS = TileLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer.WMS options\r\n\t// If any custom options not documented here are used, they will be sent to the\r\n\t// WMS server as extra parameters in each request URL. This can be useful for\r\n\t// [non-standard vendor WMS parameters](http://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n\tdefaultWmsParams: {\r\n\t\tservice: 'WMS',\r\n\t\trequest: 'GetMap',\r\n\r\n\t\t// @option layers: String = ''\r\n\t\t// **(required)** Comma-separated list of WMS layers to show.\r\n\t\tlayers: '',\r\n\r\n\t\t// @option styles: String = ''\r\n\t\t// Comma-separated list of WMS styles.\r\n\t\tstyles: '',\r\n\r\n\t\t// @option format: String = 'image/jpeg'\r\n\t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n\t\tformat: 'image/jpeg',\r\n\r\n\t\t// @option transparent: Boolean = false\r\n\t\t// If `true`, the WMS service will return images with transparency.\r\n\t\ttransparent: false,\r\n\r\n\t\t// @option version: String = '1.1.1'\r\n\t\t// Version of the WMS service to use\r\n\t\tversion: '1.1.1'\r\n\t},\r\n\r\n\toptions: {\r\n\t\t// @option crs: CRS = null\r\n\t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n\t\t// map CRS. Don't change this if you're not sure what it means.\r\n\t\tcrs: null,\r\n\r\n\t\t// @option uppercase: Boolean = false\r\n\t\t// If `true`, WMS request parameter keys will be uppercase.\r\n\t\tuppercase: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n\t\t// all keys that are not TileLayer options go to WMS params\r\n\t\tfor (var i in options) {\r\n\t\t\tif (!(i in this.options)) {\r\n\t\t\t\twmsParams[i] = options[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\tvar realRetina = options.detectRetina && retina ? 2 : 1;\r\n\t\tvar tileSize = this.getTileSize();\r\n\t\twmsParams.width = tileSize.x * realRetina;\r\n\t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n\t\tthis.wmsParams = wmsParams;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\r\n\t\tthis._crs = this.options.crs || map.options.crs;\r\n\t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n\t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n\t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n\t\tTileLayer.prototype.onAdd.call(this, map);\r\n\t},\r\n\r\n\tgetTileUrl: function (coords) {\r\n\r\n\t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n\t\t    crs = this._crs,\r\n\t\t    bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n\t\t    min = bounds.min,\r\n\t\t    max = bounds.max,\r\n\t\t    bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n\t\t    [min.y, min.x, max.y, max.x] :\r\n\t\t    [min.x, min.y, max.x, max.y]).join(','),\r\n\t\t    url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n\t\treturn url +\r\n\t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n\t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n\t},\r\n\r\n\t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n\t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n\tsetParams: function (params, noRedraw) {\r\n\r\n\t\textend(this.wmsParams, params);\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n// Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\nexport function tileLayerWMS(url, options) {\r\n\treturn new TileLayerWMS(url, options);\r\n}\r\n","export {GridLayer, gridLayer} from './GridLayer';\nimport {TileLayer, tileLayer} from './TileLayer';\nimport {TileLayerWMS, tileLayerWMS} from './TileLayer.WMS';\nTileLayer.WMS = TileLayerWMS;\ntileLayer.wms = tileLayerWMS;\nexport {TileLayer, tileLayer};\n","import {Layer} from '../Layer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport * as Browser from '../../core/Browser';\nimport {Bounds} from '../../geometry/Bounds';\n\n\n\n/*\n * @class Renderer\n * @inherits Layer\n * @aka L.Renderer\n *\n * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n * DOM container of the renderer, its bounds, and its zoom animation.\n *\n * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n * itself can be added or removed to the map. All paths use a renderer, which can\n * be implicit (the map will decide the type of renderer and use it automatically)\n * or explicit (using the [`renderer`](#path-renderer) option of the path).\n *\n * Do not use this class directly, use `SVG` and `Canvas` instead.\n *\n * @event update: Event\n * Fired when the renderer updates its bounds, center and zoom, for example when\n * its map has moved\n */\n\nexport var Renderer = Layer.extend({\n\n\t// @section\n\t// @aka Renderer options\n\toptions: {\n\t\t// @option padding: Number = 0.1\n\t\t// How much to extend the clip area around the map view (relative to its size)\n\t\t// e.g. 0.1 would be 10% of map view in each direction\n\t\tpadding: 0.1,\n\n\t\t// @option tolerance: Number = 0\n\t\t// How much to extend click tolerance round a path/object on the map\n\t\ttolerance : 0\n\t},\n\n\tinitialize: function (options) {\n\t\tUtil.setOptions(this, options);\n\t\tUtil.stamp(this);\n\t\tthis._layers = this._layers || {};\n\t},\n\n\tonAdd: function () {\n\t\tif (!this._container) {\n\t\t\tthis._initContainer(); // defined by renderer implementations\n\n\t\t\tif (this._zoomAnimated) {\n\t\t\t\tDomUtil.addClass(this._container, 'leaflet-zoom-animated');\n\t\t\t}\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t\tthis._update();\n\t\tthis.on('update', this._updatePaths, this);\n\t},\n\n\tonRemove: function () {\n\t\tthis.off('update', this._updatePaths, this);\n\t\tthis._destroyContainer();\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewreset: this._reset,\n\t\t\tzoom: this._onZoom,\n\t\t\tmoveend: this._update,\n\t\t\tzoomend: this._onZoomEnd\n\t\t};\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._onAnimZoom;\n\t\t}\n\t\treturn events;\n\t},\n\n\t_onAnimZoom: function (ev) {\n\t\tthis._updateTransform(ev.center, ev.zoom);\n\t},\n\n\t_onZoom: function () {\n\t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t},\n\n\t_updateTransform: function (center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n\t\t    position = DomUtil.getPosition(this._container),\n\t\t    viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n\t\t    currentCenterPoint = this._map.project(this._center, zoom),\n\t\t    destCenterPoint = this._map.project(center, zoom),\n\t\t    centerOffset = destCenterPoint.subtract(currentCenterPoint),\n\n\t\t    topLeftOffset = viewHalf.multiplyBy(-scale).add(position).add(viewHalf).subtract(centerOffset);\n\n\t\tif (Browser.any3d) {\n\t\t\tDomUtil.setTransform(this._container, topLeftOffset, scale);\n\t\t} else {\n\t\t\tDomUtil.setPosition(this._container, topLeftOffset);\n\t\t}\n\t},\n\n\t_reset: function () {\n\t\tthis._update();\n\t\tthis._updateTransform(this._center, this._zoom);\n\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._reset();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._project();\n\t\t}\n\t},\n\n\t_updatePaths: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._update();\n\t\t}\n\t},\n\n\t_update: function () {\n\t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n\t\t// Subclasses are responsible of firing the 'update' event.\n\t\tvar p = this.options.padding,\n\t\t    size = this._map.getSize(),\n\t\t    min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n\t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n\t\tthis._center = this._map.getCenter();\n\t\tthis._zoom = this._map.getZoom();\n\t}\n});\n","import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Browser from '../../core/Browser';\nimport * as Util from '../../core/Util';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * @class Canvas\n * @inherits Renderer\n * @aka L.Canvas\n *\n * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](http://caniuse.com/#search=canvas), Canvas is not\n * available in all web browsers, notably IE8, and overlapping geometries might\n * not display properly in some edge cases.\n *\n * @example\n *\n * Use Canvas by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.canvas()\n * });\n * ```\n *\n * Use a Canvas renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.canvas({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var Canvas = Renderer.extend({\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.viewprereset = this._onViewPreReset;\n\t\treturn events;\n\t},\n\n\t_onViewPreReset: function () {\n\t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n\t\tthis._postponeUpdatePaths = true;\n\t},\n\n\tonAdd: function () {\n\t\tRenderer.prototype.onAdd.call(this);\n\n\t\t// Redraw vectors since canvas is cleared upon removal,\n\t\t// in case of removing the renderer itself from the map.\n\t\tthis._draw();\n\t},\n\n\t_initContainer: function () {\n\t\tvar container = this._container = document.createElement('canvas');\n\n\t\tDomEvent.on(container, 'mousemove', this._onMouseMove, this);\n\t\tDomEvent.on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n\t\tDomEvent.on(container, 'mouseout', this._handleMouseOut, this);\n\n\t\tthis._ctx = container.getContext('2d');\n\t},\n\n\t_destroyContainer: function () {\n\t\tUtil.cancelAnimFrame(this._redrawRequest);\n\t\tdelete this._ctx;\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t},\n\n\t_updatePaths: function () {\n\t\tif (this._postponeUpdatePaths) { return; }\n\n\t\tvar layer;\n\t\tthis._redrawBounds = null;\n\t\tfor (var id in this._layers) {\n\t\t\tlayer = this._layers[id];\n\t\t\tlayer._update();\n\t\t}\n\t\tthis._redraw();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    container = this._container,\n\t\t    size = b.getSize(),\n\t\t    m = Browser.retina ? 2 : 1;\n\n\t\tDomUtil.setPosition(container, b.min);\n\n\t\t// set canvas size (also clearing it); use double size on retina\n\t\tcontainer.width = m * size.x;\n\t\tcontainer.height = m * size.y;\n\t\tcontainer.style.width = size.x + 'px';\n\t\tcontainer.style.height = size.y + 'px';\n\n\t\tif (Browser.retina) {\n\t\t\tthis._ctx.scale(2, 2);\n\t\t}\n\n\t\t// translate so we use the same path coordinates after canvas element moves\n\t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n\t\t// Tell paths to redraw themselves\n\t\tthis.fire('update');\n\t},\n\n\t_reset: function () {\n\t\tRenderer.prototype._reset.call(this);\n\n\t\tif (this._postponeUpdatePaths) {\n\t\t\tthis._postponeUpdatePaths = false;\n\t\t\tthis._updatePaths();\n\t\t}\n\t},\n\n\t_initPath: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\n\t\tvar order = layer._order = {\n\t\t\tlayer: layer,\n\t\t\tprev: this._drawLast,\n\t\t\tnext: null\n\t\t};\n\t\tif (this._drawLast) { this._drawLast.next = order; }\n\t\tthis._drawLast = order;\n\t\tthis._drawFirst = this._drawFirst || this._drawLast;\n\t},\n\n\t_addPath: function (layer) {\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar order = layer._order;\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\tthis._drawLast = prev;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\tdelete layer._order;\n\n\t\tdelete this._layers[Util.stamp(layer)];\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updatePath: function (layer) {\n\t\t// Redraw the union of the layer's old pixel\n\t\t// bounds and the new pixel bounds.\n\t\tthis._extendRedrawBounds(layer);\n\t\tlayer._project();\n\t\tlayer._update();\n\t\t// The redraw will extend the redraw bounds\n\t\t// with the new pixel bounds.\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateDashArray: function (layer) {\n\t\tif (typeof layer.options.dashArray === 'string') {\n\t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n\t\t\t    dashArray = [],\n\t\t\t    dashValue,\n\t\t\t    i;\n\t\t\tfor (i = 0; i < parts.length; i++) {\n\t\t\t\tdashValue = Number(parts[i]);\n\t\t\t\t// Ignore dash array containing invalid lengths\n\t\t\t\tif (isNaN(dashValue)) { return; }\n\t\t\t\tdashArray.push(dashValue);\n\t\t\t}\n\t\t\tlayer.options._dashArray = dashArray;\n\t\t} else {\n\t\t\tlayer.options._dashArray = layer.options.dashArray;\n\t\t}\n\t},\n\n\t_requestRedraw: function (layer) {\n\t\tif (!this._map) { return; }\n\n\t\tthis._extendRedrawBounds(layer);\n\t\tthis._redrawRequest = this._redrawRequest || Util.requestAnimFrame(this._redraw, this);\n\t},\n\n\t_extendRedrawBounds: function (layer) {\n\t\tif (layer._pxBounds) {\n\t\t\tvar padding = (layer.options.weight || 0) + 1;\n\t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n\t\t}\n\t},\n\n\t_redraw: function () {\n\t\tthis._redrawRequest = null;\n\n\t\tif (this._redrawBounds) {\n\t\t\tthis._redrawBounds.min._floor();\n\t\t\tthis._redrawBounds.max._ceil();\n\t\t}\n\n\t\tthis._clear(); // clear layers in redraw bounds\n\t\tthis._draw(); // draw layers\n\n\t\tthis._redrawBounds = null;\n\t},\n\n\t_clear: function () {\n\t\tvar bounds = this._redrawBounds;\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t} else {\n\t\t\tthis._ctx.save();\n\t\t\tthis._ctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n\t\t\tthis._ctx.restore();\n\t\t}\n\t},\n\n\t_draw: function () {\n\t\tvar layer, bounds = this._redrawBounds;\n\t\tthis._ctx.save();\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.beginPath();\n\t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t\tthis._ctx.clip();\n\t\t}\n\n\t\tthis._drawing = true;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n\t\t\t\tlayer._updatePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._drawing = false;\n\n\t\tthis._ctx.restore();  // Restore state before clipping.\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tif (!this._drawing) { return; }\n\n\t\tvar i, j, len2, p,\n\t\t    parts = layer._parts,\n\t\t    len = parts.length,\n\t\t    ctx = this._ctx;\n\n\t\tif (!len) { return; }\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n\t\t\t\tp = parts[i][j];\n\t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\tctx.closePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\n\t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n\t},\n\n\t_updateCircle: function (layer) {\n\n\t\tif (!this._drawing || layer._empty()) { return; }\n\n\t\tvar p = layer._point,\n\t\t    ctx = this._ctx,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n\t\tif (s !== 1) {\n\t\t\tctx.save();\n\t\t\tctx.scale(1, s);\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n\t\tif (s !== 1) {\n\t\t\tctx.restore();\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\t},\n\n\t_fillStroke: function (ctx, layer) {\n\t\tvar options = layer.options;\n\n\t\tif (options.fill) {\n\t\t\tctx.globalAlpha = options.fillOpacity;\n\t\t\tctx.fillStyle = options.fillColor || options.color;\n\t\t\tctx.fill(options.fillRule || 'evenodd');\n\t\t}\n\n\t\tif (options.stroke && options.weight !== 0) {\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n\t\t\t}\n\t\t\tctx.globalAlpha = options.opacity;\n\t\t\tctx.lineWidth = options.weight;\n\t\t\tctx.strokeStyle = options.color;\n\t\t\tctx.lineCap = options.lineCap;\n\t\t\tctx.lineJoin = options.lineJoin;\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t// Canvas obviously doesn't have mouse events for individual drawn objects,\n\t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n\t_onClick: function (e) {\n\t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tif (!(e.type === 'click' || e.type !== 'preclick') || !this._map._draggableMoved(layer)) {\n\t\t\t\t\tclickedLayer = layer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (clickedLayer)  {\n\t\t\tDomEvent.fakeStop(e);\n\t\t\tthis._fireEvent([clickedLayer], e);\n\t\t}\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n\t\tvar point = this._map.mouseEventToLayerPoint(e);\n\t\tthis._handleMouseHover(e, point);\n\t},\n\n\n\t_handleMouseOut: function (e) {\n\t\tvar layer = this._hoveredLayer;\n\t\tif (layer) {\n\t\t\t// if we're leaving the layer, fire mouseout\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-interactive');\n\t\t\tthis._fireEvent([layer], e, 'mouseout');\n\t\t\tthis._hoveredLayer = null;\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}\n\t},\n\n\t_handleMouseHover: function (e, point) {\n\t\tif (this._mouseHoverThrottled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layer, candidateHoveredLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tcandidateHoveredLayer = layer;\n\t\t\t}\n\t\t}\n\n\t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n\t\t\tthis._handleMouseOut(e);\n\n\t\t\tif (candidateHoveredLayer) {\n\t\t\t\tDomUtil.addClass(this._container, 'leaflet-interactive'); // change cursor\n\t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n\t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n\t\t\t}\n\t\t}\n\n\t\tif (this._hoveredLayer) {\n\t\t\tthis._fireEvent([this._hoveredLayer], e);\n\t\t}\n\n\t\tthis._mouseHoverThrottled = true;\n\t\tsetTimeout(Util.bind(function () {\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}, this), 32);\n\t},\n\n\t_fireEvent: function (layers, e, type) {\n\t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\t// Already last\n\t\t\treturn;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else if (next) {\n\t\t\t// Update first entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\torder.prev = this._drawLast;\n\t\tthis._drawLast.next = order;\n\n\t\torder.next = null;\n\t\tthis._drawLast = order;\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\t// Already first\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else if (prev) {\n\t\t\t// Update last entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawLast = prev;\n\t\t}\n\n\t\torder.prev = null;\n\n\t\torder.next = this._drawFirst;\n\t\tthis._drawFirst.prev = order;\n\t\tthis._drawFirst = order;\n\n\t\tthis._requestRedraw(layer);\n\t}\n});\n\n// @factory L.canvas(options?: Renderer options)\n// Creates a Canvas renderer with the given options.\nexport function canvas(options) {\n\treturn Browser.canvas ? new Canvas(options) : null;\n}\n","import * as DomUtil from '../../dom/DomUtil';\nimport * as Util from '../../core/Util';\nimport {Renderer} from './Renderer';\n\n/*\n * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n */\n\n\nexport var vmlCreate = (function () {\n\ttry {\n\t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n\t\t};\n\t} catch (e) {\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n\t\t};\n\t}\n})();\n\n\n/*\n * @class SVG\n *\n *\n * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n * with old versions of Internet Explorer.\n */\n\n// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\nexport var vmlMixin = {\n\n\t_initContainer: function () {\n\t\tthis._container = DomUtil.create('div', 'leaflet-vml-container');\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom) { return; }\n\t\tRenderer.prototype._update.call(this);\n\t\tthis.fire('update');\n\t},\n\n\t_initPath: function (layer) {\n\t\tvar container = layer._container = vmlCreate('shape');\n\n\t\tDomUtil.addClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n\t\tcontainer.coordsize = '1 1';\n\n\t\tlayer._path = vmlCreate('path');\n\t\tcontainer.appendChild(layer._path);\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[Util.stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tvar container = layer._container;\n\t\tthis._container.appendChild(container);\n\n\t\tif (layer.options.interactive) {\n\t\t\tlayer.addInteractiveTarget(container);\n\t\t}\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar container = layer._container;\n\t\tDomUtil.remove(container);\n\t\tlayer.removeInteractiveTarget(container);\n\t\tdelete this._layers[Util.stamp(layer)];\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar stroke = layer._stroke,\n\t\t    fill = layer._fill,\n\t\t    options = layer.options,\n\t\t    container = layer._container;\n\n\t\tcontainer.stroked = !!options.stroke;\n\t\tcontainer.filled = !!options.fill;\n\n\t\tif (options.stroke) {\n\t\t\tif (!stroke) {\n\t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n\t\t\t}\n\t\t\tcontainer.appendChild(stroke);\n\t\t\tstroke.weight = options.weight + 'px';\n\t\t\tstroke.color = options.color;\n\t\t\tstroke.opacity = options.opacity;\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tstroke.dashStyle = Util.isArray(options.dashArray) ?\n\t\t\t\t    options.dashArray.join(' ') :\n\t\t\t\t    options.dashArray.replace(/( *, *)/g, ' ');\n\t\t\t} else {\n\t\t\t\tstroke.dashStyle = '';\n\t\t\t}\n\t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n\t\t\tstroke.joinstyle = options.lineJoin;\n\n\t\t} else if (stroke) {\n\t\t\tcontainer.removeChild(stroke);\n\t\t\tlayer._stroke = null;\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tif (!fill) {\n\t\t\t\tfill = layer._fill = vmlCreate('fill');\n\t\t\t}\n\t\t\tcontainer.appendChild(fill);\n\t\t\tfill.color = options.fillColor || options.color;\n\t\t\tfill.opacity = options.fillOpacity;\n\n\t\t} else if (fill) {\n\t\t\tcontainer.removeChild(fill);\n\t\t\tlayer._fill = null;\n\t\t}\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point.round(),\n\t\t    r = Math.round(layer._radius),\n\t\t    r2 = Math.round(layer._radiusY || r);\n\n\t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n\t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.v = path;\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._container);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._container);\n\t}\n};\n","import {Renderer} from './Renderer';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Browser from '../../core/Browser';\nimport {stamp} from '../../core/Util';\nimport {svgCreate, pointsToPath} from './SVG.Util';\nexport {pointsToPath};\nimport {vmlMixin, vmlCreate} from './SVG.VML';\n\nexport var create = Browser.vml ? vmlCreate : svgCreate;\n\n/*\n * @class SVG\n * @inherits Renderer\n * @aka L.SVG\n *\n * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](http://caniuse.com/#search=svg), SVG is not\n * available in all web browsers, notably Android 2.x and 3.x.\n *\n * Although SVG is not available on IE7 and IE8, these browsers support\n * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n * (a now deprecated technology), and the SVG renderer will fall back to VML in\n * this case.\n *\n * @example\n *\n * Use SVG by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.svg()\n * });\n * ```\n *\n * Use a SVG renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.svg({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nexport var SVG = Renderer.extend({\n\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.zoomstart = this._onZoomStart;\n\t\treturn events;\n\t},\n\n\t_initContainer: function () {\n\t\tthis._container = create('svg');\n\n\t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n\t\tthis._container.setAttribute('pointer-events', 'none');\n\n\t\tthis._rootGroup = create('g');\n\t\tthis._container.appendChild(this._rootGroup);\n\t},\n\n\t_destroyContainer: function () {\n\t\tDomUtil.remove(this._container);\n\t\tDomEvent.off(this._container);\n\t\tdelete this._container;\n\t\tdelete this._rootGroup;\n\t\tdelete this._svgSize;\n\t},\n\n\t_onZoomStart: function () {\n\t\t// Drag-then-pinch interactions might mess up the center and zoom.\n\t\t// In this case, the easiest way to prevent this is re-do the renderer\n\t\t//   bounds and padding when the zooming starts.\n\t\tthis._update();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    size = b.getSize(),\n\t\t    container = this._container;\n\n\t\t// set size of svg-container if changed\n\t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n\t\t\tthis._svgSize = size;\n\t\t\tcontainer.setAttribute('width', size.x);\n\t\t\tcontainer.setAttribute('height', size.y);\n\t\t}\n\n\t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n\t\tDomUtil.setPosition(container, b.min);\n\t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n\t\tthis.fire('update');\n\t},\n\n\t// methods below are called by vector layers implementations\n\n\t_initPath: function (layer) {\n\t\tvar path = layer._path = create('path');\n\n\t\t// @namespace Path\n\t\t// @option className: String = null\n\t\t// Custom class name set on an element. Only for SVG renderer.\n\t\tif (layer.options.className) {\n\t\t\tDomUtil.addClass(path, layer.options.className);\n\t\t}\n\n\t\tif (layer.options.interactive) {\n\t\t\tDomUtil.addClass(path, 'leaflet-interactive');\n\t\t}\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tif (!this._rootGroup) { this._initContainer(); }\n\t\tthis._rootGroup.appendChild(layer._path);\n\t\tlayer.addInteractiveTarget(layer._path);\n\t},\n\n\t_removePath: function (layer) {\n\t\tDomUtil.remove(layer._path);\n\t\tlayer.removeInteractiveTarget(layer._path);\n\t\tdelete this._layers[stamp(layer)];\n\t},\n\n\t_updatePath: function (layer) {\n\t\tlayer._project();\n\t\tlayer._update();\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar path = layer._path,\n\t\t    options = layer.options;\n\n\t\tif (!path) { return; }\n\n\t\tif (options.stroke) {\n\t\t\tpath.setAttribute('stroke', options.color);\n\t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n\t\t\tpath.setAttribute('stroke-width', options.weight);\n\t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n\t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dasharray');\n\t\t\t}\n\n\t\t\tif (options.dashOffset) {\n\t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dashoffset');\n\t\t\t}\n\t\t} else {\n\t\t\tpath.setAttribute('stroke', 'none');\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n\t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n\t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n\t\t} else {\n\t\t\tpath.setAttribute('fill', 'none');\n\t\t}\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n\t\t    arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n\t\t// drawing a circle with two half-arcs\n\t\tvar d = layer._empty() ? 'M0 0' :\n\t\t\t'M' + (p.x - r) + ',' + p.y +\n\t\t\tarc + (r * 2) + ',0 ' +\n\t\t\tarc + (-r * 2) + ',0 ';\n\n\t\tthis._setPath(layer, d);\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.setAttribute('d', path);\n\t},\n\n\t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n\t_bringToFront: function (layer) {\n\t\tDomUtil.toFront(layer._path);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tDomUtil.toBack(layer._path);\n\t}\n});\n\nif (Browser.vml) {\n\tSVG.include(vmlMixin);\n}\n\n// @namespace SVG\n// @factory L.svg(options?: Renderer options)\n// Creates a SVG renderer with the given options.\nexport function svg(options) {\n\treturn Browser.svg || Browser.vml ? new SVG(options) : null;\n}\n","import {Map} from '../../map/Map';\nimport {canvas} from './Canvas';\nimport {svg} from './SVG';\n\nMap.include({\n\t// @namespace Map; @method getRenderer(layer: Path): Renderer\n\t// Returns the instance of `Renderer` that should be used to render the given\n\t// `Path`. It will ensure that the `renderer` options of the map and paths\n\t// are respected, and that the renderers do exist on the map.\n\tgetRenderer: function (layer) {\n\t\t// @namespace Path; @option renderer: Renderer\n\t\t// Use this specific instance of `Renderer` for this path. Takes\n\t\t// precedence over the map's [default renderer](#map-renderer).\n\t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n\t\tif (!renderer) {\n\t\t\trenderer = this._renderer = this._createRenderer();\n\t\t}\n\n\t\tif (!this.hasLayer(renderer)) {\n\t\t\tthis.addLayer(renderer);\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_getPaneRenderer: function (name) {\n\t\tif (name === 'overlayPane' || name === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar renderer = this._paneRenderers[name];\n\t\tif (renderer === undefined) {\n\t\t\trenderer = this._createRenderer({pane: name});\n\t\t\tthis._paneRenderers[name] = renderer;\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_createRenderer: function (options) {\n\t\t// @namespace Map; @option preferCanvas: Boolean = false\n\t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n\t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n\t\treturn (this.options.preferCanvas && canvas(options)) || svg(options);\n\t}\n});\n","import {Polygon} from './Polygon';\nimport {toLatLngBounds} from '../../geo/LatLngBounds';\n\n/*\n * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n */\n\n/*\n * @class Rectangle\n * @aka L.Rectangle\n * @inherits Polygon\n *\n * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n *\n * @example\n *\n * ```js\n * // define rectangle geographical bounds\n * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n *\n * // create an orange rectangle\n * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n *\n * // zoom the map to the rectangle bounds\n * map.fitBounds(bounds);\n * ```\n *\n */\n\n\nexport var Rectangle = Polygon.extend({\n\tinitialize: function (latLngBounds, options) {\n\t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n\t},\n\n\t// @method setBounds(latLngBounds: LatLngBounds): this\n\t// Redraws the rectangle with the passed bounds.\n\tsetBounds: function (latLngBounds) {\n\t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n\t},\n\n\t_boundsToLatLngs: function (latLngBounds) {\n\t\tlatLngBounds = toLatLngBounds(latLngBounds);\n\t\treturn [\n\t\t\tlatLngBounds.getSouthWest(),\n\t\t\tlatLngBounds.getNorthWest(),\n\t\t\tlatLngBounds.getNorthEast(),\n\t\t\tlatLngBounds.getSouthEast()\n\t\t];\n\t}\n});\n\n\n// @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\nexport function rectangle(latLngBounds, options) {\n\treturn new Rectangle(latLngBounds, options);\n}\n","export {Renderer} from './Renderer';\nexport {Canvas, canvas} from './Canvas';\nimport {SVG, create, pointsToPath, svg} from './SVG';\nSVG.create = create;\nSVG.pointsToPath = pointsToPath;\nexport {SVG, svg};\nimport './Renderer.getRenderer';\t// This is a bit of a hack, but needed because circular dependencies\n\nexport {Path} from './Path';\nexport {CircleMarker, circleMarker} from './CircleMarker';\nexport {Circle, circle} from './Circle';\nexport {Polyline, polyline} from './Polyline';\nexport {Polygon, polygon} from './Polygon';\nexport {Rectangle, rectangle} from './Rectangle';\n","export {Layer} from './Layer';\nexport {LayerGroup, layerGroup} from './LayerGroup';\nexport {FeatureGroup, featureGroup} from './FeatureGroup';\nimport {GeoJSON, geoJSON, geoJson, geometryToLayer, coordsToLatLng, coordsToLatLngs, latLngToCoords, latLngsToCoords, getFeature, asFeature} from './GeoJSON';\nGeoJSON.geometryToLayer = geometryToLayer;\nGeoJSON.coordsToLatLng = coordsToLatLng;\nGeoJSON.coordsToLatLngs = coordsToLatLngs;\nGeoJSON.latLngToCoords = latLngToCoords;\nGeoJSON.latLngsToCoords = latLngsToCoords;\nGeoJSON.getFeature = getFeature;\nGeoJSON.asFeature = asFeature;\nexport {GeoJSON, geoJSON, geoJson};\n\nexport {ImageOverlay, imageOverlay} from './ImageOverlay';\nexport {VideoOverlay, videoOverlay} from './VideoOverlay';\nexport {SVGOverlay, svgOverlay} from './SVGOverlay';\n\nexport {DivOverlay} from './DivOverlay';\nexport {Popup, popup} from './Popup';\nexport {Tooltip, tooltip} from './Tooltip';\n\nexport * from './marker/index';\nexport * from './tile/index';\nexport * from './vector/index';\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {LatLngBounds} from '../../geo/LatLngBounds';\nimport {Bounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n * (zoom to a selected bounding box), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option boxZoom: Boolean = true\n\t// Whether the map can be zoomed to a rectangular area specified by\n\t// dragging the mouse while pressing the shift key.\n\tboxZoom: true\n});\n\nexport var BoxZoom = Handler.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t\tthis._container = map._container;\n\t\tthis._pane = map._panes.overlayPane;\n\t\tthis._resetStateTimeout = 0;\n\t\tmap.on('unload', this._destroy, this);\n\t},\n\n\taddHooks: function () {\n\t\tDomEvent.on(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tmoved: function () {\n\t\treturn this._moved;\n\t},\n\n\t_destroy: function () {\n\t\tDomUtil.remove(this._pane);\n\t\tdelete this._pane;\n\t},\n\n\t_resetState: function () {\n\t\tthis._resetStateTimeout = 0;\n\t\tthis._moved = false;\n\t},\n\n\t_clearDeferredResetState: function () {\n\t\tif (this._resetStateTimeout !== 0) {\n\t\t\tclearTimeout(this._resetStateTimeout);\n\t\t\tthis._resetStateTimeout = 0;\n\t\t}\n\t},\n\n\t_onMouseDown: function (e) {\n\t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n\t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n\t\t// will interrupt the interaction and orphan a box element in the container.\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetState();\n\n\t\tDomUtil.disableTextSelection();\n\t\tDomUtil.disableImageDrag();\n\n\t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n\t\tDomEvent.on(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._moved) {\n\t\t\tthis._moved = true;\n\n\t\t\tthis._box = DomUtil.create('div', 'leaflet-zoom-box', this._container);\n\t\t\tDomUtil.addClass(this._container, 'leaflet-crosshair');\n\n\t\t\tthis._map.fire('boxzoomstart');\n\t\t}\n\n\t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n\t\tvar bounds = new Bounds(this._point, this._startPoint),\n\t\t    size = bounds.getSize();\n\n\t\tDomUtil.setPosition(this._box, bounds.min);\n\n\t\tthis._box.style.width  = size.x + 'px';\n\t\tthis._box.style.height = size.y + 'px';\n\t},\n\n\t_finish: function () {\n\t\tif (this._moved) {\n\t\t\tDomUtil.remove(this._box);\n\t\t\tDomUtil.removeClass(this._container, 'leaflet-crosshair');\n\t\t}\n\n\t\tDomUtil.enableTextSelection();\n\t\tDomUtil.enableImageDrag();\n\n\t\tDomEvent.off(document, {\n\t\t\tcontextmenu: DomEvent.stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseUp: function (e) {\n\t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n\t\tthis._finish();\n\n\t\tif (!this._moved) { return; }\n\t\t// Postpone to next JS tick so internal click event handling\n\t\t// still see it as \"moved\".\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetStateTimeout = setTimeout(Util.bind(this._resetState, this), 0);\n\n\t\tvar bounds = new LatLngBounds(\n\t\t        this._map.containerPointToLatLng(this._startPoint),\n\t\t        this._map.containerPointToLatLng(this._point));\n\n\t\tthis._map\n\t\t\t.fitBounds(bounds)\n\t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.keyCode === 27) {\n\t\t\tthis._finish();\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property boxZoom: Handler\n// Box (shift-drag with mouse) zoom handler.\nMap.addInitHook('addHandler', 'boxZoom', BoxZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\n\n/*\n * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\n\nMap.mergeOptions({\n\t// @option doubleClickZoom: Boolean|String = true\n\t// Whether the map can be zoomed in by double clicking on it and\n\t// zoomed out by double clicking while holding shift. If passed\n\t// `'center'`, double-click zoom will zoom to the center of the\n\t//  view regardless of where the mouse was.\n\tdoubleClickZoom: true\n});\n\nexport var DoubleClickZoom = Handler.extend({\n\taddHooks: function () {\n\t\tthis._map.on('dblclick', this._onDoubleClick, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._map.off('dblclick', this._onDoubleClick, this);\n\t},\n\n\t_onDoubleClick: function (e) {\n\t\tvar map = this._map,\n\t\t    oldZoom = map.getZoom(),\n\t\t    delta = map.options.zoomDelta,\n\t\t    zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n\t\tif (map.options.doubleClickZoom === 'center') {\n\t\t\tmap.setZoom(zoom);\n\t\t} else {\n\t\t\tmap.setZoomAround(e.containerPoint, zoom);\n\t\t}\n\t}\n});\n\n// @section Handlers\n//\n// Map properties include interaction handlers that allow you to control\n// interaction behavior in runtime, enabling or disabling certain features such\n// as dragging or touch zoom (see `Handler` methods). For example:\n//\n// ```js\n// map.doubleClickZoom.disable();\n// ```\n//\n// @property doubleClickZoom: Handler\n// Double click zoom handler.\nMap.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n","import {Map} from '../Map';\nimport * as Browser from '../../core/Browser';\nimport {Handler} from '../../core/Handler';\nimport {Draggable} from '../../dom/Draggable';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport {toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';\nimport {toBounds} from '../../geometry/Bounds';\n\n/*\n * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option dragging: Boolean = true\n\t// Whether the map be draggable with mouse/touch or not.\n\tdragging: true,\n\n\t// @section Panning Inertia Options\n\t// @option inertia: Boolean = *\n\t// If enabled, panning of the map will have an inertia effect where\n\t// the map builds momentum while dragging and continues moving in\n\t// the same direction for some time. Feels especially nice on touch\n\t// devices. Enabled by default unless running on old Android devices.\n\tinertia: !Browser.android23,\n\n\t// @option inertiaDeceleration: Number = 3000\n\t// The rate with which the inertial movement slows down, in pixels/second².\n\tinertiaDeceleration: 3400, // px/s^2\n\n\t// @option inertiaMaxSpeed: Number = Infinity\n\t// Max speed of the inertial movement, in pixels/second.\n\tinertiaMaxSpeed: Infinity, // px/s\n\n\t// @option easeLinearity: Number = 0.2\n\teaseLinearity: 0.2,\n\n\t// TODO refactor, move to CRS\n\t// @option worldCopyJump: Boolean = false\n\t// With this option enabled, the map tracks when you pan to another \"copy\"\n\t// of the world and seamlessly jumps to the original one so that all overlays\n\t// like markers and vector layers are still visible.\n\tworldCopyJump: false,\n\n\t// @option maxBoundsViscosity: Number = 0.0\n\t// If `maxBounds` is set, this option will control how solid the bounds\n\t// are when dragging the map around. The default value of `0.0` allows the\n\t// user to drag outside the bounds at normal speed, higher values will\n\t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n\t// solid, preventing the user from dragging outside the bounds.\n\tmaxBoundsViscosity: 0.0\n});\n\nexport var Drag = Handler.extend({\n\taddHooks: function () {\n\t\tif (!this._draggable) {\n\t\t\tvar map = this._map;\n\n\t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n\t\t\tthis._draggable.on({\n\t\t\t\tdragstart: this._onDragStart,\n\t\t\t\tdrag: this._onDrag,\n\t\t\t\tdragend: this._onDragEnd\n\t\t\t}, this);\n\n\t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n\t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n\t\t\t\tmap.whenReady(this._onZoomEnd, this);\n\t\t\t}\n\t\t}\n\t\tDomUtil.addClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n\t\tthis._draggable.enable();\n\t\tthis._positions = [];\n\t\tthis._times = [];\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-grab');\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-drag');\n\t\tthis._draggable.disable();\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\tmoving: function () {\n\t\treturn this._draggable && this._draggable._moving;\n\t},\n\n\t_onDragStart: function () {\n\t\tvar map = this._map;\n\n\t\tmap._stop();\n\t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n\t\t\tvar bounds = latLngBounds(this._map.options.maxBounds);\n\n\t\t\tthis._offsetLimit = toBounds(\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n\t\t\t\t\t.add(this._map.getSize()));\n\n\t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n\t\t} else {\n\t\t\tthis._offsetLimit = null;\n\t\t}\n\n\t\tmap\n\t\t    .fire('movestart')\n\t\t    .fire('dragstart');\n\n\t\tif (map.options.inertia) {\n\t\t\tthis._positions = [];\n\t\t\tthis._times = [];\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tif (this._map.options.inertia) {\n\t\t\tvar time = this._lastTime = +new Date(),\n\t\t\t    pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n\t\t\tthis._positions.push(pos);\n\t\t\tthis._times.push(time);\n\n\t\t\tthis._prunePositions(time);\n\t\t}\n\n\t\tthis._map\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_prunePositions: function (time) {\n\t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n\t\t\tthis._positions.shift();\n\t\t\tthis._times.shift();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tvar pxCenter = this._map.getSize().divideBy(2),\n\t\t    pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n\t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n\t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n\t},\n\n\t_viscousLimit: function (value, threshold) {\n\t\treturn value - (value - threshold) * this._viscosity;\n\t},\n\n\t_onPreDragLimit: function () {\n\t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n\t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n\t\tvar limit = this._offsetLimit;\n\t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n\t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n\t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n\t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n\t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n\t},\n\n\t_onPreDragWrap: function () {\n\t\t// TODO refactor to be able to adjust map pane position after zoom\n\t\tvar worldWidth = this._worldWidth,\n\t\t    halfWidth = Math.round(worldWidth / 2),\n\t\t    dx = this._initialWorldOffset,\n\t\t    x = this._draggable._newPos.x,\n\t\t    newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n\t\t    newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n\t\t    newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n\t\tthis._draggable._absPos = this._draggable._newPos.clone();\n\t\tthis._draggable._newPos.x = newX;\n\t},\n\n\t_onDragEnd: function (e) {\n\t\tvar map = this._map,\n\t\t    options = map.options,\n\n\t\t    noInertia = !options.inertia || this._times.length < 2;\n\n\t\tmap.fire('dragend', e);\n\n\t\tif (noInertia) {\n\t\t\tmap.fire('moveend');\n\n\t\t} else {\n\t\t\tthis._prunePositions(+new Date());\n\n\t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n\t\t\t    duration = (this._lastTime - this._times[0]) / 1000,\n\t\t\t    ease = options.easeLinearity,\n\n\t\t\t    speedVector = direction.multiplyBy(ease / duration),\n\t\t\t    speed = speedVector.distanceTo([0, 0]),\n\n\t\t\t    limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n\t\t\t    limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n\t\t\t    decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n\t\t\t    offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n\t\t\tif (!offset.x && !offset.y) {\n\t\t\t\tmap.fire('moveend');\n\n\t\t\t} else {\n\t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n\t\t\t\tUtil.requestAnimFrame(function () {\n\t\t\t\t\tmap.panBy(offset, {\n\t\t\t\t\t\tduration: decelerationDuration,\n\t\t\t\t\t\teaseLinearity: ease,\n\t\t\t\t\t\tnoMoveStart: true,\n\t\t\t\t\t\tanimate: true\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property dragging: Handler\n// Map dragging handler (by both mouse and touch).\nMap.addInitHook('addHandler', 'dragging', Drag);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport {on, off, stop} from '../../dom/DomEvent';\nimport {toPoint} from '../../geometry/Point';\n\n\n/*\n * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n */\n\n// @namespace Map\n// @section Keyboard Navigation Options\nMap.mergeOptions({\n\t// @option keyboard: Boolean = true\n\t// Makes the map focusable and allows users to navigate the map with keyboard\n\t// arrows and `+`/`-` keys.\n\tkeyboard: true,\n\n\t// @option keyboardPanDelta: Number = 80\n\t// Amount of pixels to pan when pressing an arrow key.\n\tkeyboardPanDelta: 80\n});\n\nexport var Keyboard = Handler.extend({\n\n\tkeyCodes: {\n\t\tleft:    [37],\n\t\tright:   [39],\n\t\tdown:    [40],\n\t\tup:      [38],\n\t\tzoomIn:  [187, 107, 61, 171],\n\t\tzoomOut: [189, 109, 54, 173]\n\t},\n\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\n\t\tthis._setPanDelta(map.options.keyboardPanDelta);\n\t\tthis._setZoomDelta(map.options.zoomDelta);\n\t},\n\n\taddHooks: function () {\n\t\tvar container = this._map._container;\n\n\t\t// make the container focusable by tabbing\n\t\tif (container.tabIndex <= 0) {\n\t\t\tcontainer.tabIndex = '0';\n\t\t}\n\n\t\ton(container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.on({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._removeHooks();\n\n\t\toff(this._map._container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.off({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\t_onMouseDown: function () {\n\t\tif (this._focused) { return; }\n\n\t\tvar body = document.body,\n\t\t    docEl = document.documentElement,\n\t\t    top = body.scrollTop || docEl.scrollTop,\n\t\t    left = body.scrollLeft || docEl.scrollLeft;\n\n\t\tthis._map._container.focus();\n\n\t\twindow.scrollTo(left, top);\n\t},\n\n\t_onFocus: function () {\n\t\tthis._focused = true;\n\t\tthis._map.fire('focus');\n\t},\n\n\t_onBlur: function () {\n\t\tthis._focused = false;\n\t\tthis._map.fire('blur');\n\t},\n\n\t_setPanDelta: function (panDelta) {\n\t\tvar keys = this._panKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n\t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n\t\t\tkeys[codes.right[i]] = [panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n\t\t\tkeys[codes.down[i]] = [0, panDelta];\n\t\t}\n\t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n\t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n\t\t}\n\t},\n\n\t_setZoomDelta: function (zoomDelta) {\n\t\tvar keys = this._zoomKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n\t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n\t\t}\n\t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n\t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n\t\t}\n\t},\n\n\t_addHooks: function () {\n\t\ton(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_removeHooks: function () {\n\t\toff(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n\t\tvar key = e.keyCode,\n\t\t    map = this._map,\n\t\t    offset;\n\n\t\tif (key in this._panKeys) {\n\t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n\t\t\t\toffset = this._panKeys[key];\n\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n\t\t\t\t}\n\n\t\t\t\tmap.panBy(offset);\n\n\t\t\t\tif (map.options.maxBounds) {\n\t\t\t\t\tmap.panInsideBounds(map.options.maxBounds);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (key in this._zoomKeys) {\n\t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n\t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n\t\t\tmap.closePopup();\n\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tstop(e);\n\t}\n});\n\n// @section Handlers\n// @section Handlers\n// @property keyboard: Handler\n// Keyboard navigation handler.\nMap.addInitHook('addHandler', 'keyboard', Keyboard);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\n\n/*\n * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Mouse wheel options\n\t// @option scrollWheelZoom: Boolean|String = true\n\t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n\t// it will zoom to the center of the view regardless of where the mouse was.\n\tscrollWheelZoom: true,\n\n\t// @option wheelDebounceTime: Number = 40\n\t// Limits the rate at which a wheel can fire (in milliseconds). By default\n\t// user can't zoom via wheel more often than once per 40 ms.\n\twheelDebounceTime: 40,\n\n\t// @option wheelPxPerZoomLevel: Number = 60\n\t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n\t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n\t// faster (and vice versa).\n\twheelPxPerZoomLevel: 60\n});\n\nexport var ScrollWheelZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'wheel', this._onWheelScroll, this);\n\n\t\tthis._delta = 0;\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'wheel', this._onWheelScroll, this);\n\t},\n\n\t_onWheelScroll: function (e) {\n\t\tvar delta = DomEvent.getWheelDelta(e);\n\n\t\tvar debounce = this._map.options.wheelDebounceTime;\n\n\t\tthis._delta += delta;\n\t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n\t\tif (!this._startTime) {\n\t\t\tthis._startTime = +new Date();\n\t\t}\n\n\t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n\t\tclearTimeout(this._timer);\n\t\tthis._timer = setTimeout(Util.bind(this._performZoom, this), left);\n\n\t\tDomEvent.stop(e);\n\t},\n\n\t_performZoom: function () {\n\t\tvar map = this._map,\n\t\t    zoom = map.getZoom(),\n\t\t    snap = this._map.options.zoomSnap || 0;\n\n\t\tmap._stop(); // stop panning and fly animations if any\n\n\t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n\t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n\t\t    d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n\t\t    d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n\t\t    delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n\t\tthis._delta = 0;\n\t\tthis._startTime = null;\n\n\t\tif (!delta) { return; }\n\n\t\tif (map.options.scrollWheelZoom === 'center') {\n\t\t\tmap.setZoom(zoom + delta);\n\t\t} else {\n\t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property scrollWheelZoom: Handler\n// Scroll wheel zoom handler.\nMap.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport {Point} from '../../geometry/Point';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as Browser from '../../core/Browser';\n\n\n/*\n * L.Map.Tap is used to enable mobile hacks like quick taps and long hold.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option tap: Boolean = true\n\t// Enables mobile hacks for supporting instant taps (fixing 200ms click\n\t// delay on iOS/Android) and touch holds (fired as `contextmenu` events).\n\ttap: true,\n\n\t// @option tapTolerance: Number = 15\n\t// The max number of pixels a user can shift his finger during touch\n\t// for it to be considered a valid tap.\n\ttapTolerance: 15\n});\n\nexport var Tap = Handler.extend({\n\taddHooks: function () {\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\t_onDown: function (e) {\n\t\tif (!e.touches) { return; }\n\n\t\tDomEvent.preventDefault(e);\n\n\t\tthis._fireClick = true;\n\n\t\t// don't simulate click or track longpress if more than 1 touch\n\t\tif (e.touches.length > 1) {\n\t\t\tthis._fireClick = false;\n\t\t\tclearTimeout(this._holdTimeout);\n\t\t\treturn;\n\t\t}\n\n\t\tvar first = e.touches[0],\n\t\t    el = first.target;\n\n\t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n\t\t// if touching a link, highlight it\n\t\tif (el.tagName && el.tagName.toLowerCase() === 'a') {\n\t\t\tDomUtil.addClass(el, 'leaflet-active');\n\t\t}\n\n\t\t// simulate long hold but setting a timeout\n\t\tthis._holdTimeout = setTimeout(Util.bind(function () {\n\t\t\tif (this._isTapValid()) {\n\t\t\t\tthis._fireClick = false;\n\t\t\t\tthis._onUp();\n\t\t\t\tthis._simulateEvent('contextmenu', first);\n\t\t\t}\n\t\t}, this), 1000);\n\n\t\tthis._simulateEvent('mousedown', first);\n\n\t\tDomEvent.on(document, {\n\t\t\ttouchmove: this._onMove,\n\t\t\ttouchend: this._onUp\n\t\t}, this);\n\t},\n\n\t_onUp: function (e) {\n\t\tclearTimeout(this._holdTimeout);\n\n\t\tDomEvent.off(document, {\n\t\t\ttouchmove: this._onMove,\n\t\t\ttouchend: this._onUp\n\t\t}, this);\n\n\t\tif (this._fireClick && e && e.changedTouches) {\n\n\t\t\tvar first = e.changedTouches[0],\n\t\t\t    el = first.target;\n\n\t\t\tif (el && el.tagName && el.tagName.toLowerCase() === 'a') {\n\t\t\t\tDomUtil.removeClass(el, 'leaflet-active');\n\t\t\t}\n\n\t\t\tthis._simulateEvent('mouseup', first);\n\n\t\t\t// simulate click if the touch didn't move too much\n\t\t\tif (this._isTapValid()) {\n\t\t\t\tthis._simulateEvent('click', first);\n\t\t\t}\n\t\t}\n\t},\n\n\t_isTapValid: function () {\n\t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n\t},\n\n\t_onMove: function (e) {\n\t\tvar first = e.touches[0];\n\t\tthis._newPos = new Point(first.clientX, first.clientY);\n\t\tthis._simulateEvent('mousemove', first);\n\t},\n\n\t_simulateEvent: function (type, e) {\n\t\tvar simulatedEvent = document.createEvent('MouseEvents');\n\n\t\tsimulatedEvent._simulated = true;\n\t\te.target._simulatedClick = true;\n\n\t\tsimulatedEvent.initMouseEvent(\n\t\t        type, true, true, window, 1,\n\t\t        e.screenX, e.screenY,\n\t\t        e.clientX, e.clientY,\n\t\t        false, false, false, false, 0, null);\n\n\t\te.target.dispatchEvent(simulatedEvent);\n\t}\n});\n\n// @section Handlers\n// @property tap: Handler\n// Mobile touch hacks (quick tap and touch hold) handler.\nif (Browser.touch && (!Browser.pointer || Browser.safari)) {\n\tMap.addInitHook('addHandler', 'tap', Tap);\n}\n","import {Map} from '../Map';\nimport {Handler} from '../../core/Handler';\nimport * as DomEvent from '../../dom/DomEvent';\nimport * as Util from '../../core/Util';\nimport * as DomUtil from '../../dom/DomUtil';\nimport * as Browser from '../../core/Browser';\n\n/*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option touchZoom: Boolean|String = *\n\t// Whether the map can be zoomed by touch-dragging with two fingers. If\n\t// passed `'center'`, it will zoom to the center of the view regardless of\n\t// where the touch events (fingers) were. Enabled for touch-capable web\n\t// browsers except for old Androids.\n\ttouchZoom: Browser.touch && !Browser.android23,\n\n\t// @option bounceAtZoomLimits: Boolean = true\n\t// Set it to false if you don't want the map to zoom beyond min/max zoom\n\t// and then bounce back when pinch-zooming.\n\tbounceAtZoomLimits: true\n});\n\nexport var TouchZoom = Handler.extend({\n\taddHooks: function () {\n\t\tDomUtil.addClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tDomUtil.removeClass(this._map._container, 'leaflet-touch-zoom');\n\t\tDomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\t_onTouchStart: function (e) {\n\t\tvar map = this._map;\n\t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n\t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n\t\tthis._centerPoint = map.getSize()._divideBy(2);\n\t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n\t\tif (map.options.touchZoom !== 'center') {\n\t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n\t\t}\n\n\t\tthis._startDist = p1.distanceTo(p2);\n\t\tthis._startZoom = map.getZoom();\n\n\t\tthis._moved = false;\n\t\tthis._zooming = true;\n\n\t\tmap._stop();\n\n\t\tDomEvent.on(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.on(document, 'touchend', this._onTouchEnd, this);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchMove: function (e) {\n\t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n\t\tvar map = this._map,\n\t\t    p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]),\n\t\t    scale = p1.distanceTo(p2) / this._startDist;\n\n\t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n\t\tif (!map.options.bounceAtZoomLimits && (\n\t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n\t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n\t\t\tthis._zoom = map._limitZoom(this._zoom);\n\t\t}\n\n\t\tif (map.options.touchZoom === 'center') {\n\t\t\tthis._center = this._startLatLng;\n\t\t\tif (scale === 1) { return; }\n\t\t} else {\n\t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n\t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n\t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n\t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n\t\t}\n\n\t\tif (!this._moved) {\n\t\t\tmap._moveStart(true, false);\n\t\t\tthis._moved = true;\n\t\t}\n\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tvar moveFn = Util.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false});\n\t\tthis._animRequest = Util.requestAnimFrame(moveFn, this, true);\n\n\t\tDomEvent.preventDefault(e);\n\t},\n\n\t_onTouchEnd: function () {\n\t\tif (!this._moved || !this._zooming) {\n\t\t\tthis._zooming = false;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._zooming = false;\n\t\tUtil.cancelAnimFrame(this._animRequest);\n\n\t\tDomEvent.off(document, 'touchmove', this._onTouchMove, this);\n\t\tDomEvent.off(document, 'touchend', this._onTouchEnd, this);\n\n\t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n\t\tif (this._map.options.zoomAnimation) {\n\t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n\t\t} else {\n\t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch zoom handler.\nMap.addInitHook('addHandler', 'touchZoom', TouchZoom);\n","import {Map} from './Map';\nimport {BoxZoom} from './handler/Map.BoxZoom';\nMap.BoxZoom = BoxZoom;\nimport {DoubleClickZoom} from './handler/Map.DoubleClickZoom';\nMap.DoubleClickZoom = DoubleClickZoom;\nimport {Drag} from './handler/Map.Drag';\nMap.Drag = Drag;\nimport {Keyboard} from './handler/Map.Keyboard';\nMap.Keyboard = Keyboard;\nimport {ScrollWheelZoom} from './handler/Map.ScrollWheelZoom';\nMap.ScrollWheelZoom = ScrollWheelZoom;\nimport {Tap} from './handler/Map.Tap';\nMap.Tap = Tap;\nimport {TouchZoom} from './handler/Map.TouchZoom';\nMap.TouchZoom = TouchZoom;\n\nexport {Map, createMap as map} from './Map';\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n  return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n  return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n  return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  var result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n  return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n  return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n  return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n  return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n  return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n  return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n  return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n  return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n  return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n  if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n    return false;\n  }\n  return (\n    typeof window !== 'undefined' &&\n    typeof document !== 'undefined'\n  );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object' && !isArray(obj)) {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (var i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    for (var key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        fn.call(null, obj[key], key, obj);\n      }\n    }\n  }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  var result = {};\n  function assignValue(val, key) {\n    if (typeof result[key] === 'object' && typeof val === 'object') {\n      result[key] = merge(result[key], val);\n    } else {\n      result[key] = val;\n    }\n  }\n\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n  forEach(b, function assignValue(val, key) {\n    if (thisArg && typeof val === 'function') {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  });\n  return a;\n}\n\nmodule.exports = {\n  isArray: isArray,\n  isArrayBuffer: isArrayBuffer,\n  isBuffer: isBuffer,\n  isFormData: isFormData,\n  isArrayBufferView: isArrayBufferView,\n  isString: isString,\n  isNumber: isNumber,\n  isObject: isObject,\n  isUndefined: isUndefined,\n  isDate: isDate,\n  isFile: isFile,\n  isBlob: isBlob,\n  isFunction: isFunction,\n  isStream: isStream,\n  isURLSearchParams: isURLSearchParams,\n  isStandardBrowserEnv: isStandardBrowserEnv,\n  forEach: forEach,\n  merge: merge,\n  extend: extend,\n  trim: trim\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport React, { createContext, forwardRef, useContext } from 'react';\nvar leafletContext = createContext({});\nexport var useLeaflet = function useLeaflet() {\n  return useContext(leafletContext);\n};\nexport var LeafletConsumer = leafletContext.Consumer;\nexport var LeafletProvider = leafletContext.Provider;\nexport var withLeaflet = function withLeaflet(WrappedComponent) {\n  var WithLeafletComponent = function WithLeafletComponent(props, ref) {\n    return /*#__PURE__*/React.createElement(LeafletConsumer, null, function (leaflet) {\n      return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, props, {\n        leaflet: leaflet,\n        ref: ref\n      }));\n    });\n  };\n\n  var name = // flowlint-next-line sketchy-null-string:off\n  WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  WithLeafletComponent.displayName = \"Leaflet(\" + name + \")\";\n  var LeafletComponent = forwardRef(WithLeafletComponent);\n  hoistNonReactStatics(LeafletComponent, WrappedComponent);\n  return LeafletComponent;\n};","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* 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","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\n\nexports.__esModule = true;\nexports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) {\n  var _parsePath = parsePath(path),\n      pathname = _parsePath.pathname,\n      search = _parsePath.search,\n      hash = _parsePath.hash;\n\n  return createPath({\n    pathname: pathname,\n    search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value,\n    hash: hash\n  });\n};\n\nvar stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) {\n  var _parsePath2 = parsePath(path),\n      pathname = _parsePath2.pathname,\n      search = _parsePath2.search,\n      hash = _parsePath2.hash;\n\n  return createPath({\n    pathname: pathname,\n    search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) {\n      return prefix === '?' ? prefix : suffix;\n    }),\n    hash: hash\n  });\n};\n\nvar getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) {\n  var _parsePath3 = parsePath(path),\n      search = _parsePath3.search;\n\n  var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)'));\n  return match && match[1];\n};\n\nvar extractPath = function extractPath(string) {\n  var match = string.match(/^(https?:)?\\/\\/[^\\/]*/);\n  return match == null ? string : string.substring(match[0].length);\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n  var pathname = extractPath(path);\n  var search = '';\n  var hash = '';\n\n  process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like \"%s\"', path) : void 0;\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substring(hashIndex);\n    pathname = pathname.substring(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n  if (searchIndex !== -1) {\n    search = pathname.substring(searchIndex);\n    pathname = pathname.substring(0, searchIndex);\n  }\n\n  if (pathname === '') pathname = '/';\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash\n  };\n};\n\nvar createPath = exports.createPath = function createPath(location) {\n  if (location == null || typeof location === 'string') return location;\n\n  var basename = location.basename,\n      pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n\n  var path = (basename || '') + pathname;\n\n  if (search && search !== '?') path += search;\n\n  if (hash) path += hash;\n\n  return path;\n};","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createQuery = exports.createQuery = function createQuery(props) {\n  return _extends(Object.create(null), props);\n};\n\nvar createLocation = exports.createLocation = function createLocation() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/';\n  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Actions.POP;\n  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n  var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input;\n\n  process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(!object.path, 'Location descriptor objects should have a `pathname`, not a `path`.') : void 0;\n\n  var pathname = object.pathname || '/';\n  var search = object.search || '';\n  var hash = object.hash || '';\n  var state = object.state;\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash,\n    state: state,\n    action: action,\n    key: key\n  };\n};\n\nvar isDate = function isDate(object) {\n  return Object.prototype.toString.call(object) === '[object Date]';\n};\n\nvar statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) {\n  if (a === b) return true;\n\n  var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n  var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n  if (typeofA !== typeofB) return false;\n\n  !(typeofA !== 'function') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0;\n\n  // Not the same object, but same type.\n  if (typeofA === 'object') {\n    !!(isDate(a) && isDate(b)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0;\n\n    if (!Array.isArray(a)) {\n      var keysofA = Object.keys(a);\n      var keysofB = Object.keys(b);\n      return keysofA.length === keysofB.length && keysofA.every(function (key) {\n        return statesAreEqual(a[key], b[key]);\n      });\n    }\n\n    return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n      return statesAreEqual(item, b[index]);\n    });\n  }\n\n  // All other serializable types (string, number, boolean)\n  // should be strict equal.\n  return false;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n  return a.key === b.key &&\n  // a.action === b.action && // Different action !== location change.\n  a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state);\n};","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\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","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\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","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","module.exports = {};\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\nvar PUSH = exports.PUSH = 'PUSH';\n\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = exports.REPLACE = 'REPLACE';\n\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = exports.POP = 'POP';","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","'use strict';\n\nexports.__esModule = true;\nvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n  return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n  return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n  var ua = window.navigator.userAgent;\n\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n  return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nvar supportsPopstateOnHashchange = exports.supportsPopstateOnHashchange = function supportsPopstateOnHashchange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nvar isExtraneousPopstateEvent = exports.isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\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","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\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 = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\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 (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\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 : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\nexport { polyfill };\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultStringifyQuery = function defaultStringifyQuery(query) {\n  return (0, _queryString.stringify)(query).replace(/%20/g, '+');\n};\n\nvar defaultParseQueryString = _queryString.parse;\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nvar useQueries = function useQueries(createHistory) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var history = createHistory(options);\n    var stringifyQuery = options.stringifyQuery,\n        parseQueryString = options.parseQueryString;\n\n\n    if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n    if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n    var decodeQuery = function decodeQuery(location) {\n      if (!location) return location;\n\n      if (location.query == null) location.query = parseQueryString(location.search.substring(1));\n\n      return location;\n    };\n\n    var encodeQuery = function encodeQuery(location, query) {\n      if (query == null) return location;\n\n      var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n      var queryString = stringifyQuery(query);\n      var search = queryString ? '?' + queryString : '';\n\n      return _extends({}, object, {\n        search: search\n      });\n    };\n\n    // Override all read methods with query-aware versions.\n    var getCurrentLocation = function getCurrentLocation() {\n      return decodeQuery(history.getCurrentLocation());\n    };\n\n    var listenBefore = function listenBefore(hook) {\n      return history.listenBefore(function (location, callback) {\n        return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback);\n      });\n    };\n\n    var listen = function listen(listener) {\n      return history.listen(function (location) {\n        return listener(decodeQuery(location));\n      });\n    };\n\n    // Override all write methods with query-aware versions.\n    var push = function push(location) {\n      return history.push(encodeQuery(location, location.query));\n    };\n\n    var replace = function replace(location) {\n      return history.replace(encodeQuery(location, location.query));\n    };\n\n    var createPath = function createPath(location) {\n      return history.createPath(encodeQuery(location, location.query));\n    };\n\n    var createHref = function createHref(location) {\n      return history.createHref(encodeQuery(location, location.query));\n    };\n\n    var createLocation = function createLocation(location) {\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args));\n\n      if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query);\n\n      return decodeQuery(newLocation);\n    };\n\n    return _extends({}, history, {\n      getCurrentLocation: getCurrentLocation,\n      listenBefore: listenBefore,\n      listen: listen,\n      push: push,\n      replace: replace,\n      createPath: createPath,\n      createHref: createHref,\n      createLocation: createLocation\n    });\n  };\n};\n\nexports.default = useQueries;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar useBasename = function useBasename(createHistory) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var history = createHistory(options);\n    var basename = options.basename;\n\n\n    var addBasename = function addBasename(location) {\n      if (!location) return location;\n\n      if (basename && location.basename == null) {\n        if (location.pathname.toLowerCase().indexOf(basename.toLowerCase()) === 0) {\n          location.pathname = location.pathname.substring(basename.length);\n          location.basename = basename;\n\n          if (location.pathname === '') location.pathname = '/';\n        } else {\n          location.basename = '';\n        }\n      }\n\n      return location;\n    };\n\n    var prependBasename = function prependBasename(location) {\n      if (!basename) return location;\n\n      var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n      var pname = object.pathname;\n      var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n      var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n      var pathname = normalizedBasename + normalizedPathname;\n\n      return _extends({}, object, {\n        pathname: pathname\n      });\n    };\n\n    // Override all read methods with basename-aware versions.\n    var getCurrentLocation = function getCurrentLocation() {\n      return addBasename(history.getCurrentLocation());\n    };\n\n    var listenBefore = function listenBefore(hook) {\n      return history.listenBefore(function (location, callback) {\n        return (0, _runTransitionHook2.default)(hook, addBasename(location), callback);\n      });\n    };\n\n    var listen = function listen(listener) {\n      return history.listen(function (location) {\n        return listener(addBasename(location));\n      });\n    };\n\n    // Override all write methods with basename-aware versions.\n    var push = function push(location) {\n      return history.push(prependBasename(location));\n    };\n\n    var replace = function replace(location) {\n      return history.replace(prependBasename(location));\n    };\n\n    var createPath = function createPath(location) {\n      return history.createPath(prependBasename(location));\n    };\n\n    var createHref = function createHref(location) {\n      return history.createHref(prependBasename(location));\n    };\n\n    var createLocation = function createLocation(location) {\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n    };\n\n    return _extends({}, history, {\n      getCurrentLocation: getCurrentLocation,\n      listenBefore: listenBefore,\n      listen: listen,\n      push: push,\n      replace: replace,\n      createPath: createPath,\n      createHref: createHref,\n      createLocation: createLocation\n    });\n  };\n};\n\nexports.default = useBasename;","module.exports = require('./lib/axios');","\"use strict\";\n\nimport { DomUtil } from 'leaflet';\n\nvar splitClassName = function splitClassName(className) {\n  if (className === void 0) {\n    className = '';\n  }\n\n  return className.split(' ').filter(Boolean);\n};\n\nexport var addClassName = function addClassName(container, className) {\n  splitClassName(className).forEach(function (cls) {\n    DomUtil.addClass(container, cls);\n  });\n};\nexport var removeClassName = function removeClassName(container, className) {\n  splitClassName(className).forEach(function (cls) {\n    DomUtil.removeClass(container, cls);\n  });\n};\nexport default (function (container, prevClassName, nextClassName) {\n  if (container != null && nextClassName !== prevClassName) {\n    if (prevClassName != null && prevClassName.length > 0) {\n      removeClassName(container, prevClassName);\n    }\n\n    if (nextClassName != null && nextClassName.length > 0) {\n      addClassName(container, nextClassName);\n    }\n  }\n});","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Component } from 'react';\nexport var EVENTS_RE = /^on(.+)$/i;\n\nvar MapEvented = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(MapEvented, _Component);\n\n  function MapEvented(props) {\n    var _this;\n\n    _this = _Component.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"_leafletEvents\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"leafletElement\", void 0);\n\n    _this._leafletEvents = _this.extractLeafletEvents(props);\n    return _this;\n  }\n\n  var _proto = MapEvented.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.bindLeafletEvents(this._leafletEvents);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_prevProps) {\n    this._leafletEvents = this.bindLeafletEvents(this.extractLeafletEvents(this.props), this._leafletEvents);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var _this2 = this;\n\n    var el = this.leafletElement;\n    if (!el) return;\n    Object.keys(this._leafletEvents).forEach(function (ev) {\n      el.off(ev, _this2._leafletEvents[ev]);\n    });\n  };\n\n  _proto.extractLeafletEvents = function extractLeafletEvents(props) {\n    return Object.keys(props).reduce(function (res, prop) {\n      if (EVENTS_RE.test(prop)) {\n        if (props[prop] != null) {\n          var _key = prop.replace(EVENTS_RE, function (match, p) {\n            return p.toLowerCase();\n          });\n\n          res[_key] = props[prop];\n        }\n      }\n\n      return res;\n    }, {});\n  };\n\n  _proto.bindLeafletEvents = function bindLeafletEvents(next, prev) {\n    if (next === void 0) {\n      next = {};\n    }\n\n    if (prev === void 0) {\n      prev = {};\n    }\n\n    var el = this.leafletElement;\n    if (el == null || el.on == null) return {};\n\n    var diff = _extends({}, prev);\n\n    Object.keys(prev).forEach(function (ev) {\n      if (next[ev] == null || prev[ev] !== next[ev]) {\n        delete diff[ev];\n        el.off(ev, prev[ev]);\n      }\n    });\n    Object.keys(next).forEach(function (ev) {\n      if (prev[ev] == null || next[ev] !== prev[ev]) {\n        diff[ev] = next[ev];\n        el.on(ev, next[ev]);\n      }\n    });\n    return diff;\n  };\n\n  _proto.fireLeafletEvent = function fireLeafletEvent(type, data) {\n    var el = this.leafletElement;\n    if (el) el.fire(type, data);\n  };\n\n  return MapEvented;\n}(Component);\n\nexport { MapEvented as default };","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport MapEvented from './MapEvented';\n\nvar MapComponent = /*#__PURE__*/function (_MapEvented) {\n  _inheritsLoose(MapComponent, _MapEvented);\n\n  function MapComponent() {\n    return _MapEvented.apply(this, arguments) || this;\n  }\n\n  var _proto = MapComponent.prototype;\n\n  _proto.getOptions = function getOptions(props) {\n    if (props.pane != null) {\n      return props;\n    }\n\n    if (props.leaflet != null && props.leaflet.pane != null) {\n      return _extends(_extends({}, props), {}, {\n        pane: props.leaflet.pane\n      });\n    }\n\n    return props;\n  };\n\n  return MapComponent;\n}(MapEvented);\n\nexport { MapComponent as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","\"use strict\";\n\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React, { Fragment } from 'react';\nimport { LeafletProvider } from './context';\nimport MapComponent from './MapComponent';\n\nvar MapLayer = /*#__PURE__*/function (_MapComponent) {\n  _inheritsLoose(MapLayer, _MapComponent);\n\n  function MapLayer(props) {\n    var _this;\n\n    _this = _MapComponent.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"contextValue\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"leafletElement\", void 0);\n\n    _this.leafletElement = _this.createLeafletElement(props);\n    return _this;\n  }\n\n  var _proto = MapLayer.prototype;\n\n  _proto.createLeafletElement = function createLeafletElement(_props) {\n    throw new Error('createLeafletElement() must be implemented');\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(_fromProps, _toProps) {};\n\n  _proto.componentDidMount = function componentDidMount() {\n    _MapComponent.prototype.componentDidMount.call(this);\n\n    this.layerContainer.addLayer(this.leafletElement);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    _MapComponent.prototype.componentDidUpdate.call(this, prevProps);\n\n    if (this.props.attribution !== prevProps.attribution) {\n      var map = this.props.leaflet.map;\n\n      if (map != null && map.attributionControl != null) {\n        map.attributionControl.removeAttribution(prevProps.attribution);\n        map.attributionControl.addAttribution(this.props.attribution);\n      }\n    }\n\n    this.updateLeafletElement(prevProps, this.props);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    _MapComponent.prototype.componentWillUnmount.call(this);\n\n    this.layerContainer.removeLayer(this.leafletElement);\n  };\n\n  _proto.render = function render() {\n    var children = this.props.children;\n\n    if (children == null) {\n      return null;\n    }\n\n    return this.contextValue == null ? /*#__PURE__*/React.createElement(Fragment, null, children) : /*#__PURE__*/React.createElement(LeafletProvider, {\n      value: this.contextValue\n    }, children);\n  };\n\n  _createClass(MapLayer, [{\n    key: \"layerContainer\",\n    get: function get() {\n      return this.props.leaflet.layerContainer || this.props.leaflet.map;\n    }\n  }]);\n\n  return MapLayer;\n}(MapComponent);\n\nexport { MapLayer as default };","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isObject = require('isobject');\n\nfunction isObjectObject(o) {\n  return isObject(o) === true\n    && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObjectObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (typeof ctor !== 'function') return false;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObjectObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n};\n","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n  Transition: _Transition.default,\n  TransitionGroup: _TransitionGroup.default,\n  ReplaceTransition: _ReplaceTransition.default,\n  CSSTransition: _CSSTransition.default\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar runTransitionHook = function runTransitionHook(hook, location, callback) {\n  var result = hook(location, callback);\n\n  if (hook.length < 2) {\n    // Assume the hook runs synchronously and automatically\n    // call the callback with the return value.\n    callback(result);\n  } else {\n    process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(result === undefined, 'You should not \"return\" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0;\n  }\n};\n\nexports.default = runTransitionHook;","'use strict';\n\nexports.__esModule = true;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _Actions = require('./Actions');\n\nvar _LocationUtils = require('./LocationUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createHistory = function createHistory() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var getCurrentLocation = options.getCurrentLocation,\n      getUserConfirmation = options.getUserConfirmation,\n      pushLocation = options.pushLocation,\n      replaceLocation = options.replaceLocation,\n      go = options.go,\n      keyLength = options.keyLength;\n\n\n  var currentLocation = void 0;\n  var pendingLocation = void 0;\n  var beforeListeners = [];\n  var listeners = [];\n  var allKeys = [];\n\n  var getCurrentIndex = function getCurrentIndex() {\n    if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key);\n\n    if (currentLocation) return allKeys.indexOf(currentLocation.key);\n\n    return -1;\n  };\n\n  var updateLocation = function updateLocation(nextLocation) {\n    var currentIndex = getCurrentIndex();\n\n    currentLocation = nextLocation;\n\n    if (currentLocation.action === _Actions.PUSH) {\n      allKeys = [].concat(allKeys.slice(0, currentIndex + 1), [currentLocation.key]);\n    } else if (currentLocation.action === _Actions.REPLACE) {\n      allKeys[currentIndex] = currentLocation.key;\n    }\n\n    listeners.forEach(function (listener) {\n      return listener(currentLocation);\n    });\n  };\n\n  var listenBefore = function listenBefore(listener) {\n    beforeListeners.push(listener);\n\n    return function () {\n      return beforeListeners = beforeListeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  };\n\n  var listen = function listen(listener) {\n    listeners.push(listener);\n\n    return function () {\n      return listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  };\n\n  var confirmTransitionTo = function confirmTransitionTo(location, callback) {\n    (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) {\n      (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) {\n        return result != null ? done(result) : next();\n      });\n    }, function (message) {\n      if (getUserConfirmation && typeof message === 'string') {\n        getUserConfirmation(message, function (ok) {\n          return callback(ok !== false);\n        });\n      } else {\n        callback(message !== false);\n      }\n    });\n  };\n\n  var transitionTo = function transitionTo(nextLocation) {\n    if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do\n\n    pendingLocation = nextLocation;\n\n    confirmTransitionTo(nextLocation, function (ok) {\n      if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation\n\n      pendingLocation = null;\n\n      if (ok) {\n        // Treat PUSH to same path like REPLACE to be consistent with browsers\n        if (nextLocation.action === _Actions.PUSH) {\n          var prevPath = (0, _PathUtils.createPath)(currentLocation);\n          var nextPath = (0, _PathUtils.createPath)(nextLocation);\n\n          if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n        }\n\n        if (nextLocation.action === _Actions.POP) {\n          updateLocation(nextLocation);\n        } else if (nextLocation.action === _Actions.PUSH) {\n          if (pushLocation(nextLocation) !== false) updateLocation(nextLocation);\n        } else if (nextLocation.action === _Actions.REPLACE) {\n          if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation);\n        }\n      } else if (currentLocation && nextLocation.action === _Actions.POP) {\n        var prevIndex = allKeys.indexOf(currentLocation.key);\n        var nextIndex = allKeys.indexOf(nextLocation.key);\n\n        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL\n      }\n    });\n  };\n\n  var push = function push(input) {\n    return transitionTo(createLocation(input, _Actions.PUSH));\n  };\n\n  var replace = function replace(input) {\n    return transitionTo(createLocation(input, _Actions.REPLACE));\n  };\n\n  var goBack = function goBack() {\n    return go(-1);\n  };\n\n  var goForward = function goForward() {\n    return go(1);\n  };\n\n  var createKey = function createKey() {\n    return Math.random().toString(36).substr(2, keyLength || 6);\n  };\n\n  var createHref = function createHref(location) {\n    return (0, _PathUtils.createPath)(location);\n  };\n\n  var createLocation = function createLocation(location, action) {\n    var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : createKey();\n    return (0, _LocationUtils.createLocation)(location, action, key);\n  };\n\n  return {\n    getCurrentLocation: getCurrentLocation,\n    listenBefore: listenBefore,\n    listen: listen,\n    transitionTo: transitionTo,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    createKey: createKey,\n    createPath: _PathUtils.createPath,\n    createHref: createHref,\n    createLocation: createLocation\n  };\n};\n\nexports.default = createHistory;","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);","'use strict';\n\nexports.__esModule = true;\nexports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined;\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar needsHashchangeListener = _ExecutionEnvironment.canUseDOM && !(0, _DOMUtils.supportsPopstateOnHashchange)();\n\nvar _createLocation = function _createLocation(historyState) {\n  var key = historyState && historyState.key;\n\n  return (0, _LocationUtils.createLocation)({\n    pathname: window.location.pathname,\n    search: window.location.search,\n    hash: window.location.hash,\n    state: key ? (0, _DOMStateStorage.readState)(key) : undefined\n  }, undefined, key);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n  var historyState = void 0;\n  try {\n    historyState = window.history.state || {};\n  } catch (error) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    historyState = {};\n  }\n\n  return _createLocation(historyState);\n};\n\nvar getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) {\n  return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\nvar startListener = exports.startListener = function startListener(listener) {\n  var handlePopState = function handlePopState(event) {\n    if ((0, _DOMUtils.isExtraneousPopstateEvent)(event)) // Ignore extraneous popstate events in WebKit\n      return;\n    listener(_createLocation(event.state));\n  };\n\n  (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\n  var handleUnpoppedHashChange = function handleUnpoppedHashChange() {\n    return listener(getCurrentLocation());\n  };\n\n  if (needsHashchangeListener) {\n    (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n  }\n\n  return function () {\n    (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n\n    if (needsHashchangeListener) {\n      (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n    }\n  };\n};\n\nvar updateLocation = function updateLocation(location, updateState) {\n  var state = location.state,\n      key = location.key;\n\n\n  if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state);\n\n  updateState({ key: key }, (0, _PathUtils.createPath)(location));\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n  return updateLocation(location, function (state, path) {\n    return window.history.pushState(state, null, path);\n  });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n  return updateLocation(location, function (state, path) {\n    return window.history.replaceState(state, null, path);\n  });\n};\n\nvar go = exports.go = function go(n) {\n  if (n) window.history.go(n);\n};","'use strict';\n\nexports.__esModule = true;\nexports.readState = exports.saveState = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QuotaExceededErrors = {\n  QuotaExceededError: true,\n  QUOTA_EXCEEDED_ERR: true\n};\n\nvar SecurityErrors = {\n  SecurityError: true\n};\n\nvar KeyPrefix = '@@History/';\n\nvar createKey = function createKey(key) {\n  return KeyPrefix + key;\n};\n\nvar saveState = exports.saveState = function saveState(key, state) {\n  if (!window.sessionStorage) {\n    // Session storage is not available or hidden.\n    // sessionStorage is undefined in Internet Explorer when served via file protocol.\n    process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0;\n\n    return;\n  }\n\n  try {\n    if (state == null) {\n      window.sessionStorage.removeItem(createKey(key));\n    } else {\n      window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n    }\n  } catch (error) {\n    if (SecurityErrors[error.name]) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0;\n\n      return;\n    }\n\n    if (QuotaExceededErrors[error.name] && window.sessionStorage.length === 0) {\n      // Safari \"private mode\" throws QuotaExceededError.\n      process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0;\n\n      return;\n    }\n\n    throw error;\n  }\n};\n\nvar readState = exports.readState = function readState(key) {\n  var json = void 0;\n  try {\n    json = window.sessionStorage.getItem(createKey(key));\n  } catch (error) {\n    if (SecurityErrors[error.name]) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0;\n\n      return undefined;\n    }\n  }\n\n  if (json) {\n    try {\n      return JSON.parse(json);\n    } catch (error) {\n      // Ignore invalid JSON.\n    }\n  }\n\n  return undefined;\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n  'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n    headers['Content-Type'] = value;\n  }\n}\n\nfunction getDefaultAdapter() {\n  var adapter;\n  if (typeof XMLHttpRequest !== 'undefined') {\n    // For browsers use XHR adapter\n    adapter = require('./adapters/xhr');\n  } else if (typeof process !== 'undefined') {\n    // For node use HTTP adapter\n    adapter = require('./adapters/http');\n  }\n  return adapter;\n}\n\nvar defaults = {\n  adapter: getDefaultAdapter(),\n\n  transformRequest: [function transformRequest(data, headers) {\n    normalizeHeaderName(headers, 'Content-Type');\n    if (utils.isFormData(data) ||\n      utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n      return data.toString();\n    }\n    if (utils.isObject(data)) {\n      setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n      return JSON.stringify(data);\n    }\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    /*eslint no-param-reassign:0*/\n    if (typeof data === 'string') {\n      try {\n        data = JSON.parse(data);\n      } catch (e) { /* Ignore */ }\n    }\n    return data;\n  }],\n\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  }\n};\n\ndefaults.headers = {\n  common: {\n    'Accept': 'application/json, text/plain, */*'\n  }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n  defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = {\n            standalone:\n                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n                    '_'\n                ),\n            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n                '_'\n            ),\n            isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n        },\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex =\n            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex:\n            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex:\n            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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 (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n","exports.f = require('./_wks');\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _addClass.default)(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return (0, _removeClass.default)(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.onEnter = function (node, appearing) {\n      var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          className = _this$getClassNames.className;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, className);\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(node, appearing);\n      }\n    };\n\n    _this.onEntering = function (node, appearing) {\n      var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n          activeClassName = _this$getClassNames2.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(node, appearing);\n      }\n    };\n\n    _this.onEntered = function (node, appearing) {\n      var appearClassName = _this.getClassNames('appear').doneClassName;\n\n      var enterClassName = _this.getClassNames('enter').doneClassName;\n\n      var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n      _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(node, appearing);\n      }\n    };\n\n    _this.onExit = function (node) {\n      var _this$getClassNames3 = _this.getClassNames('exit'),\n          className = _this$getClassNames3.className;\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      addClass(node, className);\n\n      if (_this.props.onExit) {\n        _this.props.onExit(node);\n      }\n    };\n\n    _this.onExiting = function (node) {\n      var _this$getClassNames4 = _this.getClassNames('exit'),\n          activeClassName = _this$getClassNames4.activeClassName;\n\n      _this.reflowAndAddClass(node, activeClassName);\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(node);\n      }\n    };\n\n    _this.onExited = function (node) {\n      var _this$getClassNames5 = _this.getClassNames('exit'),\n          doneClassName = _this$getClassNames5.doneClassName;\n\n      _this.removeClasses(node, 'exit');\n\n      addClass(node, doneClassName);\n\n      if (_this.props.onExited) {\n        _this.props.onExited(node);\n      }\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n      var className = isStringClassNames ? prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n      var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n      return {\n        className: className,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$getClassNames6 = this.getClassNames(type),\n        className = _this$getClassNames6.className,\n        activeClassName = _this$getClassNames6.activeClassName,\n        doneClassName = _this$getClassNames6.doneClassName;\n\n    className && removeClass(node, className);\n    activeClassName && removeClass(node, activeClassName);\n    doneClassName && removeClass(node, doneClassName);\n  };\n\n  _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n    // This is for to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n    if (className) {\n      /* eslint-disable no-unused-expressions */\n      node && node.scrollTop;\n      /* eslint-enable no-unused-expressions */\n\n      addClass(node, className);\n    }\n  };\n\n  _proto.render = function render() {\n    var props = _extends({}, this.props);\n\n    delete props.classNames;\n    return _react.default.createElement(_Transition.default, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n  /**\n   * The animation classNames applied to the component as it enters, exits or\n   * has finished the transition. A single name can be provided and it will be\n   * suffixed for each stage: e.g.\n   *\n   * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n   * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n   * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n   *\n   * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n   * This allows you to define different behavior for when appearing is done and\n   * when regular entering is done, using selectors like\n   * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n   * epic entrance animation when element first appears in the DOM using\n   * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   * simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: _PropTypes.classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (typeof module !== 'undefined') {\n  root = module;\n} else {\n  root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","(function(root) {\n  var isOn = false;\n  var scrollbarSize;\n  var scrollTop;\n\n  function getScrollbarSize() {\n    if (typeof scrollbarSize !== 'undefined') return scrollbarSize;\n\n    var doc = document.documentElement;\n    var dummyScroller = document.createElement('div');\n    dummyScroller.setAttribute('style', 'width:99px;height:99px;' + 'position:absolute;top:-9999px;overflow:scroll;');\n    doc.appendChild(dummyScroller);\n    scrollbarSize = dummyScroller.offsetWidth - dummyScroller.clientWidth;\n    doc.removeChild(dummyScroller);\n    return scrollbarSize;\n  }\n\n  function hasScrollbar() {\n    return document.documentElement.scrollHeight > window.innerHeight;\n  }\n\n  function on(options) {\n    if (typeof document === 'undefined' || isOn) return;\n    var doc = document.documentElement;\n    scrollTop = window.pageYOffset;\n    if (hasScrollbar()) {\n      doc.style.width = 'calc(100% - '+ getScrollbarSize() +'px)';\n    } else {\n      doc.style.width = '100%';\n    }\n    doc.style.position = 'fixed';\n    doc.style.top = -scrollTop + 'px';\n    doc.style.overflow = 'hidden';\n    isOn = true;\n  }\n\n  function off() {\n    if (typeof document === 'undefined' || !isOn) return;\n    var doc = document.documentElement;\n    doc.style.width = '';\n    doc.style.position = '';\n    doc.style.top = '';\n    doc.style.overflow = '';\n    window.scroll(0, scrollTop);\n    isOn = false;\n  }\n\n  function toggle() {\n    if (isOn) {\n      off();\n      return;\n    }\n    on();\n  }\n\n  var noScroll = {\n    on: on,\n    off: off,\n    toggle: toggle,\n  };\n\n  if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n    module.exports = noScroll;\n  } else {\n    root.noScroll = noScroll;\n  }\n})(this);\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","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n  return function wrap() {\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n    return fn.apply(thisArg, args);\n  };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    var requestData = config.data;\n    var requestHeaders = config.headers;\n\n    if (utils.isFormData(requestData)) {\n      delete requestHeaders['Content-Type']; // Let the browser set it\n    }\n\n    var request = new XMLHttpRequest();\n    var loadEvent = 'onreadystatechange';\n    var xDomain = false;\n\n    // For IE 8/9 CORS support\n    // Only supports POST and GET calls and doesn't returns the response headers.\n    // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n    if (process.env.NODE_ENV !== 'test' &&\n        typeof window !== 'undefined' &&\n        window.XDomainRequest && !('withCredentials' in request) &&\n        !isURLSameOrigin(config.url)) {\n      request = new window.XDomainRequest();\n      loadEvent = 'onload';\n      xDomain = true;\n      request.onprogress = function handleProgress() {};\n      request.ontimeout = function handleTimeout() {};\n    }\n\n    // HTTP basic authentication\n    if (config.auth) {\n      var username = config.auth.username || '';\n      var password = config.auth.password || '';\n      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n    }\n\n    request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    // Listen for ready state\n    request[loadEvent] = function handleLoad() {\n      if (!request || (request.readyState !== 4 && !xDomain)) {\n        return;\n      }\n\n      // The request errored out and we didn't get a response, this will be\n      // handled by onerror instead\n      // With one exception: request that using file: protocol, most browsers\n      // will return status as 0 even though it's a successful request\n      if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n        return;\n      }\n\n      // Prepare the response\n      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n      var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n      var response = {\n        data: responseData,\n        // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)\n        status: request.status === 1223 ? 204 : request.status,\n        statusText: request.status === 1223 ? 'No Content' : request.statusText,\n        headers: responseHeaders,\n        config: config,\n        request: request\n      };\n\n      settle(resolve, reject, response);\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(createError('Network Error', config, null, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (utils.isStandardBrowserEnv()) {\n      var cookies = require('./../helpers/cookies');\n\n      // Add xsrf header\n      var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n          cookies.read(config.xsrfCookieName) :\n          undefined;\n\n      if (xsrfValue) {\n        requestHeaders[config.xsrfHeaderName] = xsrfValue;\n      }\n    }\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n          // Remove Content-Type if data is undefined\n          delete requestHeaders[key];\n        } else {\n          // Otherwise add header to the request\n          request.setRequestHeader(key, val);\n        }\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (config.withCredentials) {\n      request.withCredentials = true;\n    }\n\n    // Add responseType to request if needed\n    if (config.responseType) {\n      try {\n        request.responseType = config.responseType;\n      } catch (e) {\n        // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n        // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n        if (config.responseType !== 'json') {\n          throw e;\n        }\n      }\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', config.onDownloadProgress);\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', config.onUploadProgress);\n    }\n\n    if (config.cancelToken) {\n      // Handle cancellation\n      config.cancelToken.promise.then(function onCanceled(cancel) {\n        if (!request) {\n          return;\n        }\n\n        request.abort();\n        reject(cancel);\n        // Clean up request\n        request = null;\n      });\n    }\n\n    if (requestData === undefined) {\n      requestData = null;\n    }\n\n    // Send the request\n    request.send(requestData);\n  });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n  var error = new Error(message);\n  return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n  this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n  return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * Normally a component is not transitioned if it is shown when the `<Transition>` component mounts.\n   * If you want to transition on the first mount set `appear` to `true`, and the\n   * component will transition in as soon as the `<Transition>` mounts.\n   *\n   * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = _PropTypes.timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. **Note:** Timeouts are still used as a fallback if provided.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n  enter: _propTypes.default.number,\n  exit: _propTypes.default.number,\n  appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  active: _propTypes.default.string\n}), _propTypes.default.shape({\n  enter: _propTypes.default.string,\n  enterDone: _propTypes.default.string,\n  enterActive: _propTypes.default.string,\n  exit: _propTypes.default.string,\n  exitDone: _propTypes.default.string,\n  exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n  /**\n   * The `<TransitionGroup>` component manages a set of transition components\n   * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n   * components, `<TransitionGroup>` is a state machine for managing the mounting\n   * and unmounting of components over time.\n   *\n   * Consider the example below. As items are removed or added to the TodoList the\n   * `in` prop is toggled automatically by the `<TransitionGroup>`.\n   *\n   * Note that `<TransitionGroup>`  does not define any animation behavior!\n   * Exactly _how_ a list item animates is up to the individual transition\n   * component. This means you can mix and match animations across different list\n   * items.\n   */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: {\n        isMounting: !this.appeared\n      }\n    };\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.appeared = true;\n    this.mounted = true;\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  };\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return children;\n    }\n\n    return _react.default.createElement(Component, props, children);\n  };\n\n  return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n  transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: _propTypes.default.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: _propTypes.default.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: _propTypes.default.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: _propTypes.default.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n   getRgba: getRgba,\n   getHsla: getHsla,\n   getRgb: getRgb,\n   getHsl: getHsl,\n   getHwb: getHwb,\n   getAlpha: getAlpha,\n\n   hexString: hexString,\n   rgbString: rgbString,\n   rgbaString: rgbaString,\n   percentString: percentString,\n   percentaString: percentaString,\n   hslString: hslString,\n   hslaString: hslaString,\n   hwbString: hwbString,\n   keyword: keyword\n};\n\nfunction getRgba(string) {\n   if (!string) {\n      return;\n   }\n   var abbr =  /^#([a-fA-F0-9]{3,4})$/i,\n       hex =  /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n       rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       keyword = /(\\w+)/;\n\n   var rgb = [0, 0, 0],\n       a = 1,\n       match = string.match(abbr),\n       hexAlpha = \"\";\n   if (match) {\n      match = match[1];\n      hexAlpha = match[3];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(hex)) {\n      hexAlpha = match[2];\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i + 1]);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n         return [0, 0, 0, 0];\n      }\n      rgb = colorName$1[match[1]];\n      if (!rgb) {\n         return;\n      }\n   }\n\n   for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n   }\n   if (!a && a != 0) {\n      a = 1;\n   }\n   else {\n      a = scale(a, 0, 1);\n   }\n   rgb[3] = a;\n   return rgb;\n}\n\nfunction getHsla(string) {\n   if (!string) {\n      return;\n   }\n   var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hsl);\n   if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n   }\n}\n\nfunction getHwb(string) {\n   if (!string) {\n      return;\n   }\n   var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hwb);\n   if (match) {\n    var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n   }\n}\n\nfunction getRgb(string) {\n   var rgba = getRgba(string);\n   return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n  var hsla = getHsla(string);\n  return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n   var vals = getRgba(string);\n   if (vals) {\n      return vals[3];\n   }\n   else if (vals = getHsla(string)) {\n      return vals[3];\n   }\n   else if (vals = getHwb(string)) {\n      return vals[3];\n   }\n}\n\n// generators\nfunction hexString(rgba, a) {\n   var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n   return \"#\" + hexDouble(rgba[0]) \n              + hexDouble(rgba[1])\n              + hexDouble(rgba[2])\n              + (\n                 (a >= 0 && a < 1)\n                 ? hexDouble(Math.round(a * 255))\n                 : \"\"\n              );\n}\n\nfunction rgbString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return rgbaString(rgba, alpha);\n   }\n   return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n   if (alpha === undefined) {\n      alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n   }\n   return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n           + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return percentaString(rgba, alpha);\n   }\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n\n   return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n   return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n      return hslaString(hsla, alpha);\n   }\n   return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n   if (alpha === undefined) {\n      alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n   }\n   return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n           + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n   if (alpha === undefined) {\n      alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n   }\n   return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n           + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n   return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n  var str = num.toString(16).toUpperCase();\n  return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n   reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\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 (including typed arrays), 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: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\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 true if `value` is a finite number, else returns false\r\n\t * @param {*} value  - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\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 https://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 = Object.create(source);\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): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\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\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\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|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|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: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\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\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = 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;\n\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\nvar helpers_easing = {\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_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\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\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\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, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\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.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\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.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(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\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\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== '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\nvar helpers_canvas = exports$1;\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_core.clear = exports$1.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_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace.  all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\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\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\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\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_core.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 * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\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 * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\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\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\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 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(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 (helpers$1.isFinite(origin) && helpers$1.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$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\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$1.extend({}, 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 = helpers$1.extend({}, 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$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_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\nvar core_animation = exports$3;\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$3.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$3.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});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\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\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\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$1.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$1.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\r\n\t\tme.advance();\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() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.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};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\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\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\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$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = 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 += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\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 pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: 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\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\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 globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\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 = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(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\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._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$1,\r\n\t\t\tborderColor: defaultColor$1,\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\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\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 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 globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\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 || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\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(vm) {\r\n\treturn vm && vm.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(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\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\thalf = 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 - half;\r\n\t\ty2 = vm.y + half;\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\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\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 rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\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\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\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(vm)) {\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\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - 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});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._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\t\t\toffset: true,\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\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\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._length;\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, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(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 min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = 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 size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : 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 - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(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\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked   | meta.stack\r\n\t\t\t//           | found | not found | undefined\r\n\t\t\t// false     |   x   |     x     |     x\r\n\t\t\t// true      |       |     x     |\r\n\t\t\t// undefined |       |     x     |     x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\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\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._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\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._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 list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\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 style = meta.controller.getStyle(i);\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: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].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: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\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$1.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\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_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\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\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\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\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}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights.  This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._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\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\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\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._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\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\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 (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._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 list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\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 style = meta.controller.getStyle(i);\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: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].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\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_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\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._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\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\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\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 {object} 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$1.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 {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[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 {ChartElement[]} items - elements to filter\r\n * @param {object} position - 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 {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - 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\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._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\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 * @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\nvar core_interaction = {\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 {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - 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 {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - 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\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\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 {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - 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};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.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.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\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\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\nvar core_layouts = {\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\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\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 {ILayoutItem} 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 {ILayoutItem} 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$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\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\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\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\nvar platform_basic = {\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};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\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$1.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\t// eslint-disable-next-line getter-return\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 addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(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$1.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$1.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\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\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\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(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$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(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$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(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\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\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\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\r\n * @param {string} css - the CSS to be injected.\r\n */\r\nfunction injectCSS(rootNode, css) {\r\n\t// https://stackoverflow.com/q/3922139\r\n\tvar expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\r\n\tif (!expando.containsStyles) {\r\n\t\texpando.containsStyles = true;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tvar style = document.createElement('style');\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tstyle.appendChild(document.createTextNode(css));\r\n\t\trootNode.appendChild(style);\r\n\t}\r\n}\r\n\r\nvar platform_dom$2 = {\r\n\t/**\r\n\t * When `true`, prevents the automatic injection of the stylesheet required to\r\n\t * correctly detect when the chart is added to the DOM and then resized. This\r\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\r\n\t * to be manually imported to make this library compatible with any CSP.\r\n\t * See https://github.com/chartjs/Chart.js/issues/5208\r\n\t */\r\n\tdisableCSSInjection: false,\r\n\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\t/**\r\n\t * Initializes resources that depend on platform options.\r\n\t * @param {HTMLCanvasElement} canvas - The Canvas element.\r\n\t * @private\r\n\t */\r\n\t_ensureLoaded: function(canvas) {\r\n\t\tif (!this.disableCSSInjection) {\r\n\t\t\t// If the canvas is in a shadow DOM, then the styles must also be inserted\r\n\t\t\t// into the same shadow DOM.\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5763\r\n\t\t\tvar root = canvas.getRootNode ? canvas.getRootNode() : document;\r\n\t\t\tvar targetNode = root.host ? root : document.head;\r\n\t\t\tinjectCSS(targetNode, stylesheet);\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\t// Load platform resources on first chart creation, to make it possible to\r\n\t\t\t// import the library before setting platform options.\r\n\t\t\tthis._ensureLoaded(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$1.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$1.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\t// eslint-disable-next-line no-self-assign\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\taddListener(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);\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\tremoveListener(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$1.addEvent = addListener;\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$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_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\nvar platform = helpers$1.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);\n\ncore_defaults._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\nvar core_plugins = {\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 {IPlugin[]|IPlugin} 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 {IPlugin[]|IPlugin} 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 {IPlugin[]} 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 {Chart} 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 {object[]} [{ 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$1.clone(core_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};\n\nvar core_scaleService = {\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$1.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$1.merge(Object.create(null), [core_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$1.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$1.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\tcore_layouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\r\nvar getRtlHelper = helpers$1.rtl.getRtlAdapter;\r\n\r\ncore_defaults._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$1.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\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\t\t\t\t\tif (item.label) {\r\n\t\t\t\t\t\ttitle = item.label;\r\n\t\t\t\t\t} else if (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$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers$1.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\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\r\n\t\t\t\t\tlabel += tooltipItem.value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\t}\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$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers$1.noop,\r\n\t\t\tfooter: helpers$1.noop,\r\n\t\t\tafterFooter: helpers$1.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 {object} 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: x / count,\r\n\t\t\ty: 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 {object} the position of the event in canvas coordinates\r\n\t * @returns {object} 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$1.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// 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$1.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 {string[]} 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/**\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\n */\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\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\r\n\tvar indexScale = controller._getIndexScale();\r\n\tvar valueScale = controller._getValueScale();\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\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tvalue: valueScale ? '' + valueScale.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 = core_defaults.global;\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// Drawing direction and text direction\r\n\t\trtl: tooltipOpts.rtl,\r\n\t\ttextDirection: tooltipOpts.textDirection,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault$8(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$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault$8(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$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault$8(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$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers$1.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers$1.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$1.each(body, function(bodyItem) {\r\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers$1.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$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers$1.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\nfunction getAlignedX(vm, align) {\r\n\treturn align === 'center'\r\n\t\t? vm.x + vm.width / 2\r\n\t\t: align === 'right'\r\n\t\t\t? vm.x + vm.width - vm.xPadding\r\n\t\t\t: vm.x + vm.xPadding;\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$4 = core_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$1.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$1.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 = tooltipPosition.x;\r\n\t\t\tmodel.y = 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) {\r\n\t\tvar title = vm.title;\r\n\t\tvar length = title.length;\r\n\t\tvar titleFontSize, titleSpacing, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\ttitleFontSize = vm.titleFontSize;\r\n\t\t\ttitleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = vm.titleFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === 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) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar bodyAlign = vm._bodyAlign;\r\n\t\tvar body = vm.body;\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\r\n\r\n\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\tvar bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\r\n\t\tvar bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\r\n\r\n\t\tctx.textAlign = bodyAlign;\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\tpt.x = getAlignedX(vm, bodyAlignForCalculation);\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = vm.bodyFontColor;\r\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\txLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right'\r\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\r\n\t\t\t: 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\tfor (i = 0, ilen = body.length; i < ilen; ++i) {\r\n\t\t\tbodyItem = body[i];\r\n\t\t\ttextColor = vm.labelTextColors[i];\r\n\t\t\tlabelColors = vm.labelColors[i];\r\n\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\tlines = bodyItem.lines;\r\n\t\t\tfor (j = 0, jlen = lines.length; j < jlen; ++j) {\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\tvar rtlColorX = rtlHelper.x(colorX);\r\n\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 = vm.legendColorBackground;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), 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 = labelColors.borderColor;\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = labelColors.backgroundColor;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), 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(lines[j]);\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.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$1.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) {\r\n\t\tvar footer = vm.footer;\r\n\t\tvar length = footer.length;\r\n\t\tvar footerFontSize, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tfooterFontSize = vm.footerFontSize;\r\n\r\n\t\t\tctx.fillStyle = vm.footerFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\r\n\t\t\t\tpt.y += 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) {\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\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\tctx.save();\r\n\t\t\tctx.globalAlpha = opacity;\r\n\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\thelpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx);\r\n\r\n\t\t\thelpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\tctx.restore();\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\tif (options.reverse) {\r\n\t\t\t\tme._active.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers$1.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\nvar positioners_1 = positioners;\r\n\r\nvar core_tooltip = exports$4;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {},\r\n\tevents: [\r\n\t\t'mousemove',\r\n\t\t'mouseout',\r\n\t\t'click',\r\n\t\t'touchstart',\r\n\t\t'touchmove'\r\n\t],\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\tmaintainAspectRatio: true,\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0\r\n});\r\n\r\n/**\r\n * Recursively merge the given config objects representing the `scales` option\r\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\r\n * returns a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeScaleConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\ttype = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t}\r\n\r\n\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// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Recursively merge the given config objects as the root options by handling\r\n * default scale options for the `scales` and `scale` properties, then returns\r\n * a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tvar tval = target[key] || Object.create(null);\r\n\t\t\tvar sval = source[key];\r\n\r\n\t\t\tif (key === 'scales') {\r\n\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\r\n\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction initConfig(config) {\r\n\tconfig = config || Object.create(null);\r\n\r\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\r\n\t// and so would change references to labels and datasets, preventing data updates.\r\n\tvar data = config.data = config.data || {};\r\n\tdata.datasets = data.datasets || [];\r\n\tdata.labels = data.labels || [];\r\n\r\n\tconfig.options = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[config.type],\r\n\t\tconfig.options || {});\r\n\r\n\treturn config;\r\n}\r\n\r\nfunction updateConfig(chart) {\r\n\tvar newOptions = chart.options;\r\n\r\n\thelpers$1.each(chart.scales, function(scale) {\r\n\t\tcore_layouts.removeBox(chart, scale);\r\n\t});\r\n\r\n\tnewOptions = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[chart.config.type],\r\n\t\tnewOptions);\r\n\r\n\tchart.options = chart.config.options = newOptions;\r\n\tchart.ensureScalesHaveIDs();\r\n\tchart.buildOrUpdateScales();\r\n\r\n\t// Tooltip\r\n\tchart.tooltip._options = newOptions.tooltips;\r\n\tchart.tooltip.initialize();\r\n}\r\n\r\nfunction nextAvailableScaleId(axesOpts, prefix, index) {\r\n\tvar id;\r\n\tvar hasId = function(obj) {\r\n\t\treturn obj.id === id;\r\n\t};\r\n\r\n\tdo {\r\n\t\tid = prefix + index++;\r\n\t} while (helpers$1.findIndex(axesOpts, hasId) >= 0);\r\n\r\n\treturn id;\r\n}\r\n\r\nfunction positionIsHorizontal(position) {\r\n\treturn position === 'top' || position === 'bottom';\r\n}\r\n\r\nfunction compare2Level(l1, l2) {\r\n\treturn function(a, b) {\r\n\t\treturn a[l1] === b[l1]\r\n\t\t\t? a[l2] - b[l2]\r\n\t\t\t: a[l1] - b[l1];\r\n\t};\r\n}\r\n\r\nvar Chart = function(item, config) {\r\n\tthis.construct(item, config);\r\n\treturn this;\r\n};\r\n\r\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tconstruct: function(item, config) {\r\n\t\tvar me = this;\r\n\r\n\t\tconfig = initConfig(config);\r\n\r\n\t\tvar context = platform.acquireContext(item, config);\r\n\t\tvar canvas = context && context.canvas;\r\n\t\tvar height = canvas && canvas.height;\r\n\t\tvar width = canvas && canvas.width;\r\n\r\n\t\tme.id = helpers$1.uid();\r\n\t\tme.ctx = context;\r\n\t\tme.canvas = canvas;\r\n\t\tme.config = config;\r\n\t\tme.width = width;\r\n\t\tme.height = height;\r\n\t\tme.aspectRatio = height ? width / height : null;\r\n\t\tme.options = config.options;\r\n\t\tme._bufferedRender = false;\r\n\t\tme._layers = [];\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t * @prop Chart#chart\r\n\t\t * @deprecated since version 2.6.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tme.chart = me;\r\n\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t// Add the chart instance to the global namespace\r\n\t\tChart.instances[me.id] = me;\r\n\r\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\tObject.defineProperty(me, 'data', {\r\n\t\t\tget: function() {\r\n\t\t\t\treturn me.config.data;\r\n\t\t\t},\r\n\t\t\tset: function(value) {\r\n\t\t\t\tme.config.data = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!context || !canvas) {\r\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme.initialize();\r\n\t\tme.update();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Before init plugin notification\r\n\t\tcore_plugins.notify(me, 'beforeInit');\r\n\r\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\tme.bindEvents();\r\n\r\n\t\tif (me.options.responsive) {\r\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\tme.resize(true);\r\n\t\t}\r\n\r\n\t\tme.initToolTip();\r\n\r\n\t\t// After init plugin notification\r\n\t\tcore_plugins.notify(me, 'afterInit');\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\thelpers$1.canvas.clear(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\t// Stops any current animation loop occurring\r\n\t\tcore_animations.cancelAnimation(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tresize: function(silent) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\r\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\r\n\r\n\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcanvas.width = me.width = newWidth;\r\n\t\tcanvas.height = me.height = newHeight;\r\n\t\tcanvas.style.width = newWidth + 'px';\r\n\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\tif (!silent) {\r\n\t\t\t// Notify any plugins about the resize\r\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t// Notify of resize\r\n\t\t\tif (options.onResize) {\r\n\t\t\t\toptions.onResize(me, newSize);\r\n\t\t\t}\r\n\r\n\t\t\tme.stop();\r\n\t\t\tme.update({\r\n\t\t\t\tduration: options.responsiveAnimationDuration\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tensureScalesHaveIDs: function() {\r\n\t\tvar options = this.options;\r\n\t\tvar scalesOptions = options.scales || {};\r\n\t\tvar scaleOptions = options.scale;\r\n\r\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\tif (!xAxisOptions.id) {\r\n\t\t\t\txAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\tif (!yAxisOptions.id) {\r\n\t\t\t\tyAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleOptions) {\r\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Builds a map of scale ID to scale object for future lookup.\r\n\t */\r\n\tbuildOrUpdateScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar scales = me.scales || {};\r\n\t\tvar items = [];\r\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\tobj[id] = false;\r\n\t\t\treturn obj;\r\n\t\t}, {});\r\n\r\n\t\tif (options.scales) {\r\n\t\t\titems = items.concat(\r\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t}),\r\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (options.scale) {\r\n\t\t\titems.push({\r\n\t\t\t\toptions: options.scale,\r\n\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\tisDefault: true,\r\n\t\t\t\tdposition: 'chartArea'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers$1.each(items, function(item) {\r\n\t\t\tvar scaleOptions = item.options;\r\n\t\t\tvar id = scaleOptions.id;\r\n\t\t\tvar scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\r\n\r\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t}\r\n\r\n\t\t\tupdated[id] = true;\r\n\t\t\tvar scale = null;\r\n\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\tscale = scales[id];\r\n\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\tscale.chart = me;\r\n\t\t\t} else {\r\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\tchart: me\r\n\t\t\t\t});\r\n\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t}\r\n\r\n\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\tif (item.isDefault) {\r\n\t\t\t\tme.scale = scale;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// clear up discarded scales\r\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\r\n\t\t\tif (!hasUpdated) {\r\n\t\t\t\tdelete scales[id];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.scales = scales;\r\n\r\n\t\tcore_scaleService.addScalesToLayout(this);\r\n\t},\r\n\r\n\tbuildOrUpdateControllers: function() {\r\n\t\tvar me = this;\r\n\t\tvar newControllers = [];\r\n\t\tvar datasets = me.data.datasets;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tvar dataset = datasets[i];\r\n\t\t\tvar meta = me.getDatasetMeta(i);\r\n\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t\tmeta = me.getDatasetMeta(i);\r\n\t\t\t}\r\n\t\t\tmeta.type = type;\r\n\t\t\tmeta.order = dataset.order || 0;\r\n\t\t\tmeta.index = i;\r\n\r\n\t\t\tif (meta.controller) {\r\n\t\t\t\tmeta.controller.updateIndex(i);\r\n\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t} else {\r\n\t\t\t\tvar ControllerClass = controllers[meta.type];\r\n\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmeta.controller = new ControllerClass(me, i);\r\n\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn newControllers;\r\n\t},\r\n\r\n\t/**\r\n\t * Reset the elements of all datasets\r\n\t * @private\r\n\t */\r\n\tresetElements: function() {\r\n\t\tvar me = this;\r\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t* Resets the chart back to it's state before the initial animation\r\n\t*/\r\n\treset: function() {\r\n\t\tthis.resetElements();\r\n\t\tthis.tooltip.initialize();\r\n\t},\r\n\r\n\tupdate: function(config) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tupdateConfig(me);\r\n\r\n\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\tcore_plugins._invalidate(me);\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// In case the entire data object changed\r\n\t\tme.tooltip._data = me.data;\r\n\r\n\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\r\n\t\t\tme.getDatasetMeta(i).controller.buildOrUpdateElements();\r\n\t\t}\r\n\r\n\t\tme.updateLayout();\r\n\r\n\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\thelpers$1.each(newControllers, function(controller) {\r\n\t\t\t\tcontroller.reset();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme.updateDatasets();\r\n\r\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t// after update.\r\n\t\tme.tooltip.initialize();\r\n\r\n\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t// When we reset the tooltip, we need to clear it\r\n\t\tme.lastActive = [];\r\n\r\n\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\tcore_plugins.notify(me, 'afterUpdate');\r\n\r\n\t\tme._layers.sort(compare2Level('z', '_idx'));\r\n\r\n\t\tif (me._bufferedRender) {\r\n\t\t\tme._bufferedRequest = {\r\n\t\t\t\tduration: config.duration,\r\n\t\t\t\teasing: config.easing,\r\n\t\t\t\tlazy: config.lazy\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tme.render(config);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t * @private\r\n\t */\r\n\tupdateLayout: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcore_layouts.update(this, this.width, this.height);\r\n\r\n\t\tme._layers = [];\r\n\t\thelpers$1.each(me.boxes, function(box) {\r\n\t\t\t// _configure is called twice, once in core.scale.update and once here.\r\n\t\t\t// Here the boxes are fully updated and at their final positions.\r\n\t\t\tif (box._configure) {\r\n\t\t\t\tbox._configure();\r\n\t\t\t}\r\n\t\t\tme._layers.push.apply(me._layers, box._layers());\r\n\t\t}, me);\r\n\r\n\t\tme._layers.forEach(function(item, index) {\r\n\t\t\titem._idx = index;\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t * @deprecated since version 2.5.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\r\n\t\tcore_plugins.notify(me, 'afterLayout');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDatasets: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.updateDataset(i);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDataset: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getDatasetMeta(index);\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: index\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller._update();\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t},\r\n\r\n\trender: function(config) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar animationOptions = me.options.animation;\r\n\t\tvar duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\r\n\t\tvar lazy = config.lazy;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar onComplete = function(animation) {\r\n\t\t\tcore_plugins.notify(me, 'afterRender');\r\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t};\r\n\r\n\t\tif (animationOptions && duration) {\r\n\t\t\tvar animation = new core_animation({\r\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\r\n\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\r\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t});\r\n\r\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\r\n\t\t} else {\r\n\t\t\tme.draw();\r\n\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdraw: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar i, layers;\r\n\r\n\t\tme.clear();\r\n\r\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\r\n\t\t\teasingValue = 1;\r\n\t\t}\r\n\r\n\t\tme.transition(easingValue);\r\n\r\n\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Because of plugin hooks (before/afterDatasetsDraw), datasets can't\r\n\t\t// currently be part of layers. Instead, we draw\r\n\t\t// layers <= 0 before(default, backward compat), and the rest after\r\n\t\tlayers = me._layers;\r\n\t\tfor (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme.drawDatasets(easingValue);\r\n\r\n\t\t// Rest of layers\r\n\t\tfor (; i < layers.length; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme._drawTooltip(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\ttransition: function(easingValue) {\r\n\t\tvar me = this;\r\n\r\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.tooltip.transition(easingValue);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedDatasetMetas: function(filterVisible) {\r\n\t\tvar me = this;\r\n\t\tvar datasets = me.data.datasets || [];\r\n\t\tvar result = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tif (!filterVisible || me.isDatasetVisible(i)) {\r\n\t\t\t\tresult.push(me.getDatasetMeta(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.sort(compare2Level('order', 'index'));\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedVisibleDatasetMetas: function() {\r\n\t\treturn this._getSortedDatasetMetas(true);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDatasets: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar metasets, i;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmetasets = me._getSortedVisibleDatasetMetas();\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tme.drawDataset(metasets[i], easingValue);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDataset: function(meta, easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: meta.index,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t * @private\r\n\t */\r\n\t_drawTooltip: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\t\tvar args = {\r\n\t\t\ttooltip: tooltip,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttooltip.draw();\r\n\r\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Get the single element that was clicked on\r\n\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 */\r\n\tgetElementAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.single(this, e);\r\n\t},\r\n\r\n\tgetElementsAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtXAxis: function(e) {\r\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\tvar method = core_interaction.modes[mode];\r\n\t\tif (typeof method === 'function') {\r\n\t\t\treturn method(this, e, options);\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t},\r\n\r\n\tgetDatasetAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetDatasetMeta: function(datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\tif (!dataset._meta) {\r\n\t\t\tdataset._meta = {};\r\n\t\t}\r\n\r\n\t\tvar meta = dataset._meta[me.id];\r\n\t\tif (!meta) {\r\n\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\ttype: null,\r\n\t\t\t\tdata: [],\r\n\t\t\t\tdataset: null,\r\n\t\t\t\tcontroller: null,\r\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\txAxisID: null,\r\n\t\t\t\tyAxisID: null,\r\n\t\t\t\torder: dataset.order || 0,\r\n\t\t\t\tindex: datasetIndex\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn meta;\r\n\t},\r\n\r\n\tgetVisibleDatasetCount: function() {\r\n\t\tvar count = 0;\r\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t},\r\n\r\n\tisDatasetVisible: function(datasetIndex) {\r\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t},\r\n\r\n\tgenerateLegend: function() {\r\n\t\treturn this.options.legendCallback(this);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\tvar id = this.id;\r\n\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\tif (meta) {\r\n\t\t\tmeta.controller.destroy();\r\n\t\t\tdelete dataset._meta[id];\r\n\t\t}\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tvar me = this;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme.stop();\r\n\r\n\t\t// dataset controllers need to cleanup associated data\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.destroyDatasetMeta(i);\r\n\t\t}\r\n\r\n\t\tif (canvas) {\r\n\t\t\tme.unbindEvents();\r\n\t\t\thelpers$1.canvas.clear(me);\r\n\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\tme.canvas = null;\r\n\t\t\tme.ctx = null;\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'destroy');\r\n\r\n\t\tdelete Chart.instances[me.id];\r\n\t},\r\n\r\n\ttoBase64Image: function() {\r\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t},\r\n\r\n\tinitToolTip: function() {\r\n\t\tvar me = this;\r\n\t\tme.tooltip = new core_tooltip({\r\n\t\t\t_chart: me,\r\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t_data: me.data,\r\n\t\t\t_options: me.options.tooltips\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners = {};\r\n\t\tvar listener = function() {\r\n\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t};\r\n\r\n\t\thelpers$1.each(me.options.events, function(type) {\r\n\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\tlisteners[type] = listener;\r\n\t\t});\r\n\r\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\tif (me.options.responsive) {\r\n\t\t\tlistener = function() {\r\n\t\t\t\tme.resize();\r\n\t\t\t};\r\n\r\n\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\tlisteners.resize = listener;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tunbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners;\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdelete me._listeners;\r\n\t\thelpers$1.each(listeners, function(listener, type) {\r\n\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t});\r\n\t},\r\n\r\n\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\tvar prefix = enabled ? 'set' : 'remove';\r\n\t\tvar element, i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\telement = elements[i];\r\n\t\t\tif (element) {\r\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (mode === 'dataset') {\r\n\t\t\tthis.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\teventHandler: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Buffer any update calls so that renders do not occur\r\n\t\tme._bufferedRender = true;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\tvar changed = me.handleEvent(e);\r\n\t\t// for smooth tooltip animations issue #4989\r\n\t\t// the tooltip should be the source of change\r\n\t\t// Animation check workaround:\r\n\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\tif (tooltip) {\r\n\t\t\tchanged = tooltip._start\r\n\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\tif (bufferedRequest) {\r\n\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\tme.render(bufferedRequest);\r\n\t\t} else if (changed && !me.animating) {\r\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\tme.render({\r\n\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\tlazy: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme._bufferedRender = false;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\treturn me;\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 the chart needs to re-render\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 hoverOptions = options.hover;\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 hover and 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.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t}\r\n\r\n\t\t// Invoke onHover hook\r\n\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\tif (options.onClick) {\r\n\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove styling for last active (even if it may still be active)\r\n\t\tif (me.lastActive.length) {\r\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t}\r\n\r\n\t\t// Built in hover styling\r\n\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t}\r\n\r\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t// Remember Last Actives\r\n\t\tme.lastActive = me.active;\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\r\n * for backward compatibility. Though, it can still be useful for plugins that\r\n * would need to work on multiple charts?!\r\n */\r\nChart.instances = {};\r\n\r\nvar core_controller = Chart;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart instead.\r\n * @class Chart.Controller\r\n * @deprecated since version 2.6\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Controller = Chart;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.types = {};\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.configMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.configMerge = mergeConfig;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.scaleMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers$1.where = function(collection, filterCallback) {\r\n\t\tif (helpers$1.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$1.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$1.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$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers$1.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$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers$1.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$1.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers$1.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers$1.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$1.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$1.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$1.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$1.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers$1.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of decimal places\r\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\r\n\t * @param {number} x - A number.\r\n\t * @returns {number} The number of decimal places.\r\n\t * @private\r\n\t */\r\n\thelpers$1._decimalPlaces = function(x) {\r\n\t\tif (!helpers$1.isFinite(x)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar e = 1;\r\n\t\tvar p = 0;\r\n\t\twhile (Math.round(x * e) / e !== x) {\r\n\t\t\te *= 10;\r\n\t\t\tp++;\r\n\t\t}\r\n\t\treturn p;\r\n\t};\r\n\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers$1.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$1.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\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.helpers.aliasPixel\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\thelpers$1.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\r\n\t * @param {Chart} chart - The chart instance.\r\n\t * @param {number} pixel - A pixel value.\r\n\t * @param {number} width - The width of the element.\r\n\t * @returns {number} The aligned pixel value.\r\n\t * @private\r\n\t */\r\n\thelpers$1._alignPixel = function(chart, pixel, width) {\r\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\r\n\t\tvar halfWidth = width / 2;\r\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\r\n\t};\r\n\r\n\thelpers$1.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$1.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers$1.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$1.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$1.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$1.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$1.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers$1.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 - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers$1.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$1.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// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers$1.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/**\r\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\r\n\t * @param {HTMLElement} domNode - the node to check the constraint on\r\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\r\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\r\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\r\n\t */\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers$1._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$1.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$1.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$1._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers$1.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers$1._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers$1.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers$1._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$1._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers$1.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers$1._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$1._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers$1.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$1.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$1.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers$1.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\tvar ilen = arrayOfThings.length;\r\n\t\tvar i, j, jlen, thing, nestedThing;\r\n\t\tfor (i = 0; i < ilen; i++) {\r\n\t\t\tthing = arrayOfThings[i];\r\n\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers$1.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\tfor (j = 0, jlen = thing.length; j < jlen; j++) {\r\n\t\t\t\t\tnestedThing = thing[j];\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$1.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers$1.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 (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$1.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\r\n\t/**\r\n\t * @deprecated\r\n\t */\r\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers$1.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers$1.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$1.color = !chartjsColor ?\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 = core_defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn chartjsColor(value);\r\n\t\t};\r\n\r\n\thelpers$1.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\n\nfunction abstract() {\r\n\tthrow new Error(\r\n\t\t'This method is not implemented: either no adapter can ' +\r\n\t\t'be found or an incomplete integration was provided.'\r\n\t);\r\n}\r\n\r\n/**\r\n * Date adapter (current used by the time scale)\r\n * @namespace Chart._adapters._date\r\n * @memberof Chart._adapters\r\n * @private\r\n */\r\n\r\n/**\r\n * Currently supported unit string values.\r\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\r\n * @memberof Chart._adapters._date\r\n * @name Unit\r\n */\r\n\r\n/**\r\n * @class\r\n */\r\nfunction DateAdapter(options) {\r\n\tthis.options = options || {};\r\n}\r\n\r\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\r\n\t/**\r\n\t * Returns a map of time formats for the supported formatting units defined\r\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\r\n\t * @returns {{string: string}}\r\n\t */\r\n\tformats: abstract,\r\n\r\n\t/**\r\n\t * Parses the given `value` and return the associated timestamp.\r\n\t * @param {any} value - the value to parse (usually comes from the data)\r\n\t * @param {string} [format] - the expected data format\r\n\t * @returns {(number|null)}\r\n\t * @function\r\n\t */\r\n\tparse: abstract,\r\n\r\n\t/**\r\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\r\n\t * @param {number} timestamp - the timestamp to format\r\n\t * @param {string} format - the date/time token\r\n\t * @return {string}\r\n\t * @function\r\n\t */\r\n\tformat: abstract,\r\n\r\n\t/**\r\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {number} amount - the amount to add\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tadd: abstract,\r\n\r\n\t/**\r\n\t * Returns the number of `unit` between the given timestamps.\r\n\t * @param {number} max - the input timestamp (reference)\r\n\t * @param {number} min - the timestamp to substract\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tdiff: abstract,\r\n\r\n\t/**\r\n\t * Returns start of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\r\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\r\n\t * @function\r\n\t */\r\n\tstartOf: abstract,\r\n\r\n\t/**\r\n\t * Returns end of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @function\r\n\t */\r\n\tendOf: abstract,\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility for scale.getValueForPixel(),\r\n\t * this method should be overridden only by the moment adapter.\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(value) {\r\n\t\treturn value;\r\n\t}\r\n});\r\n\r\nDateAdapter.override = function(members) {\r\n\thelpers$1.extend(DateAdapter.prototype, members);\r\n};\r\n\r\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nvar core_ticks = {\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|string[]} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers$1.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 {number[]} 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$1.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$1.log10(Math.abs(tickValue));\r\n\t\t\t\t\tvar numExponential = Math.floor(logTick) - Math.floor(logDelta);\r\n\t\t\t\t\tnumExponential = Math.max(Math.min(numExponential, 20), 0);\r\n\t\t\t\t\ttickString = tickValue.toExponential(numExponential);\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$1.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};\n\nvar isArray = helpers$1.isArray;\r\nvar isNullOrUndef = helpers$1.isNullOrUndef;\r\nvar valueOrDefault$a = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\r\n\r\ncore_defaults._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// 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: core_ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\n/** Returns a new array containing numItems from arr */\r\nfunction sample(arr, numItems) {\r\n\tvar result = [];\r\n\tvar increment = arr.length / numItems;\r\n\tvar i = 0;\r\n\tvar len = arr.length;\r\n\r\n\tfor (; i < len; i += increment) {\r\n\t\tresult.push(arr[Math.floor(i)]);\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\r\n\tvar length = scale.getTicks().length;\r\n\tvar validIndex = Math.min(index, length - 1);\r\n\tvar lineValue = scale.getPixelForTick(validIndex);\r\n\tvar start = scale._startPixel;\r\n\tvar end = scale._endPixel;\r\n\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\tvar offset;\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (length === 1) {\r\n\t\t\toffset = Math.max(lineValue - start, end - lineValue);\r\n\t\t} else if (index === 0) {\r\n\t\t\toffset = (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\toffset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\r\n\t\t}\r\n\t\tlineValue += validIndex < index ? offset : -offset;\r\n\r\n\t\t// Return undefined if the pixel is out of the range\r\n\t\tif (lineValue < start - epsilon || lineValue > end + epsilon) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction garbageCollect(caches, length) {\r\n\thelpers$1.each(caches, function(cache) {\r\n\t\tvar gc = cache.gc;\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tvar i;\r\n\t\tif (gcLen > length) {\r\n\t\t\tfor (i = 0; i < gcLen; ++i) {\r\n\t\t\t\tdelete cache.data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\r\n * labels where offset indicates the anchor point offset from the top in pixels.\r\n */\r\nfunction computeLabelSizes(ctx, tickFonts, ticks, caches) {\r\n\tvar length = ticks.length;\r\n\tvar widths = [];\r\n\tvar heights = [];\r\n\tvar offsets = [];\r\n\tvar widestLabelSize = 0;\r\n\tvar highestLabelSize = 0;\r\n\tvar i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\r\n\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tlabel = ticks[i].label;\r\n\t\ttickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\r\n\t\tctx.font = fontString = tickFont.string;\r\n\t\tcache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\r\n\t\tlineHeight = tickFont.lineHeight;\r\n\t\twidth = height = 0;\r\n\t\t// Undefined labels and arrays should not be measured\r\n\t\tif (!isNullOrUndef(label) && !isArray(label)) {\r\n\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\r\n\t\t\theight = lineHeight;\r\n\t\t} else if (isArray(label)) {\r\n\t\t\t// if it is an array let's measure each element\r\n\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\tnestedLabel = label[j];\r\n\t\t\t\t// Undefined labels and arrays should not be measured\r\n\t\t\t\tif (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\r\n\t\t\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\r\n\t\t\t\t\theight += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twidths.push(width);\r\n\t\theights.push(height);\r\n\t\toffsets.push(lineHeight / 2);\r\n\t\twidestLabelSize = Math.max(width, widestLabelSize);\r\n\t\thighestLabelSize = Math.max(height, highestLabelSize);\r\n\t}\r\n\tgarbageCollect(caches, length);\r\n\r\n\twidest = widths.indexOf(widestLabelSize);\r\n\thighest = heights.indexOf(highestLabelSize);\r\n\r\n\tfunction valueAt(idx) {\r\n\t\treturn {\r\n\t\t\twidth: widths[idx] || 0,\r\n\t\t\theight: heights[idx] || 0,\r\n\t\t\toffset: offsets[idx] || 0\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tfirst: valueAt(0),\r\n\t\tlast: valueAt(length - 1),\r\n\t\twidest: valueAt(widest),\r\n\t\thighest: valueAt(highest)\r\n\t};\r\n}\r\n\r\nfunction getTickMarkLength(options) {\r\n\treturn options.drawTicks ? options.tickMarkLength : 0;\r\n}\r\n\r\nfunction getScaleLabelHeight(options) {\r\n\tvar font, padding;\r\n\r\n\tif (!options.display) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfont = helpers$1.options._parseFont(options);\r\n\tpadding = helpers$1.options.toPadding(options.padding);\r\n\r\n\treturn font.lineHeight + padding.height;\r\n}\r\n\r\nfunction parseFontOptions(options, nestedOpts) {\r\n\treturn helpers$1.extend(helpers$1.options._parseFont({\r\n\t\tfontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\r\n\t\tfontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\r\n\t\tfontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\r\n\t\tlineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\r\n\t}), {\r\n\t\tcolor: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\r\n\t});\r\n}\r\n\r\nfunction parseTickFontOptions(options) {\r\n\tvar minor = parseFontOptions(options, options.minor);\r\n\tvar major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\r\n\r\n\treturn {minor: minor, major: major};\r\n}\r\n\r\nfunction nonSkipped(ticksToFilter) {\r\n\tvar filtered = [];\r\n\tvar item, index, len;\r\n\tfor (index = 0, len = ticksToFilter.length; index < len; ++index) {\r\n\t\titem = ticksToFilter[index];\r\n\t\tif (typeof item._index !== 'undefined') {\r\n\t\t\tfiltered.push(item);\r\n\t\t}\r\n\t}\r\n\treturn filtered;\r\n}\r\n\r\nfunction getEvenSpacing(arr) {\r\n\tvar len = arr.length;\r\n\tvar i, diff;\r\n\r\n\tif (len < 2) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor (diff = arr[0], i = 1; i < len; ++i) {\r\n\t\tif (arr[i] - arr[i - 1] !== diff) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn diff;\r\n}\r\n\r\nfunction calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\r\n\tvar evenMajorSpacing = getEvenSpacing(majorIndices);\r\n\tvar spacing = (ticks.length - 1) / ticksLimit;\r\n\tvar factors, factor, i, ilen;\r\n\r\n\t// If the major ticks are evenly spaced apart, place the minor ticks\r\n\t// so that they divide the major ticks into even chunks\r\n\tif (!evenMajorSpacing) {\r\n\t\treturn Math.max(spacing, 1);\r\n\t}\r\n\r\n\tfactors = helpers$1.math._factorize(evenMajorSpacing);\r\n\tfor (i = 0, ilen = factors.length - 1; i < ilen; i++) {\r\n\t\tfactor = factors[i];\r\n\t\tif (factor > spacing) {\r\n\t\t\treturn factor;\r\n\t\t}\r\n\t}\r\n\treturn Math.max(spacing, 1);\r\n}\r\n\r\nfunction getMajorIndices(ticks) {\r\n\tvar result = [];\r\n\tvar i, ilen;\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; i++) {\r\n\t\tif (ticks[i].major) {\r\n\t\t\tresult.push(i);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction skipMajors(ticks, majorIndices, spacing) {\r\n\tvar count = 0;\r\n\tvar next = majorIndices[0];\r\n\tvar i, tick;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tfor (i = 0; i < ticks.length; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = majorIndices[count * spacing];\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction skip(ticks, spacing, majorStart, majorEnd) {\r\n\tvar start = valueOrDefault$a(majorStart, 0);\r\n\tvar end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\r\n\tvar count = 0;\r\n\tvar length, i, tick, next;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tif (majorEnd) {\r\n\t\tlength = majorEnd - majorStart;\r\n\t\tspacing = length / Math.floor(length / spacing);\r\n\t}\r\n\r\n\tnext = start;\r\n\r\n\twhile (next < 0) {\r\n\t\tcount++;\r\n\t\tnext = Math.round(start + count * spacing);\r\n\t}\r\n\r\n\tfor (i = Math.max(start, 0); i < end; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = Math.round(start + count * spacing);\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar Scale = core_element.extend({\r\n\r\n\tzeroLineIndex: 0,\r\n\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/**\r\n\t* @private\r\n\t*/\r\n\t_getLabels: function() {\r\n\t\tvar data = this.chart.data;\r\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\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\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.Scale.mergeTicksOptions\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\tmergeTicksOptions: function() {\r\n\t\t// noop\r\n\t},\r\n\r\n\tbeforeUpdate: function() {\r\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\t/**\r\n\t * @param {number} maxWidth - the max width in pixels\r\n\t * @param {number} maxHeight - the max height in pixels\r\n\t * @param {object} margins - the space between the edge of the other scales and edge of the chart\r\n\t *   This space comes from two sources:\r\n\t *     - padding - space that's required to show the labels at the edges of the scale\r\n\t *     - thickness of scales or legends in another orientation\r\n\t */\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar sampleSize = tickOpts.sampleSize;\r\n\t\tvar i, ilen, labels, ticks, samplingEnabled;\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$1.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\r\n\t\tme._ticks = null;\r\n\t\tme.ticks = null;\r\n\t\tme._labelSizes = null;\r\n\t\tme._maxLabelLines = 0;\r\n\t\tme.longestLabelWidth = 0;\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\t\tme._gridLineItems = null;\r\n\t\tme._labelItems = null;\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\t// Allow modification of ticks in callback.\r\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\r\n\r\n\t\t// Ensure ticks contains ticks in new tick format\r\n\t\tif ((!ticks || !ticks.length) && me.ticks) {\r\n\t\t\tticks = [];\r\n\t\t\tfor (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\r\n\t\t\t\tticks.push({\r\n\t\t\t\t\tvalue: me.ticks[i],\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Compute tick rotation and fit using a sampled subset of labels\r\n\t\t// We generally don't need to compute the size of every single label for determining scale size\r\n\t\tsamplingEnabled = sampleSize < ticks.length;\r\n\t\tlabels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\r\n\r\n\t\t// _configure is called twice, once here, once from core.controller.updateLayout.\r\n\t\t// Here we haven't been positioned yet, but dimensions are correct.\r\n\t\t// Variables set in _configure are needed for calculateTickRotation, and\r\n\t\t// it's ok that coordinates are not correct there, only dimensions matter.\r\n\t\tme._configure();\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\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\r\n\t\t// Auto-skip\r\n\t\tme._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\r\n\r\n\t\tif (samplingEnabled) {\r\n\t\t\t// Generate labels using all non-skipped ticks\r\n\t\t\tlabels = me._convertTicksToLabels(me._ticksToDraw);\r\n\t\t}\r\n\r\n\t\tme.ticks = labels;   // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\tme.afterUpdate();\r\n\r\n\t\t// TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\r\n\t\t// make maxWidth and maxHeight private\r\n\t\treturn me.minSize;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar reversePixels = me.options.ticks.reverse;\r\n\t\tvar startPixel, endPixel;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tstartPixel = me.left;\r\n\t\t\tendPixel = me.right;\r\n\t\t} else {\r\n\t\t\tstartPixel = me.top;\r\n\t\t\tendPixel = me.bottom;\r\n\t\t\t// by default vertical scales are from bottom to top, so pixels are reversed\r\n\t\t\treversePixels = !reversePixels;\r\n\t\t}\r\n\t\tme._startPixel = startPixel;\r\n\t\tme._endPixel = endPixel;\r\n\t\tme._reversePixels = reversePixels;\r\n\t\tme._length = endPixel - startPixel;\r\n\t},\r\n\r\n\tafterUpdate: function() {\r\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers$1.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$1.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers$1.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers$1.noop,\r\n\tafterBuildTicks: function(ticks) {\r\n\t\tvar me = this;\r\n\t\t// ticks is empty for old axis implementations here\r\n\t\tif (isArray(ticks) && ticks.length) {\r\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\r\n\t\t}\r\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\r\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\r\n\t\treturn ticks;\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers$1.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$1.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar numTicks = me.getTicks().length;\r\n\t\tvar minRotation = tickOpts.minRotation || 0;\r\n\t\tvar maxRotation = tickOpts.maxRotation;\r\n\t\tvar labelRotation = minRotation;\r\n\t\tvar labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\r\n\r\n\t\tif (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\r\n\t\t\tme.labelRotation = minRotation;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlabelSizes = me._getLabelSizes();\r\n\t\tmaxLabelWidth = labelSizes.widest.width;\r\n\t\tmaxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\r\n\r\n\t\t// Estimate the width of each grid based on the canvas width, the maximum\r\n\t\t// label width and the number of tick intervals\r\n\t\tmaxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\r\n\t\ttickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\r\n\r\n\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\tif (maxLabelWidth + 6 > tickWidth) {\r\n\t\t\ttickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\r\n\t\t\tmaxHeight = me.maxHeight - getTickMarkLength(options.gridLines)\r\n\t\t\t\t- tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\r\n\t\t\tmaxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\r\n\t\t\tlabelRotation = helpers$1.toDegrees(Math.min(\r\n\t\t\t\tMath.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)),\r\n\t\t\t\tMath.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)\r\n\t\t\t));\r\n\t\t\tlabelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers$1.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 chart = me.chart;\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 = me._isVisible();\r\n\t\tvar isBottom = opts.position === 'bottom';\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth;\r\n\t\t} else if (display) {\r\n\t\t\tminSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (!isHorizontal) {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t} else if (display) {\r\n\t\t\tminSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing the labels\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar tickFonts = parseTickFontOptions(tickOpts);\r\n\t\t\tvar labelSizes = me._getLabelSizes();\r\n\t\t\tvar firstLabelSize = labelSizes.first;\r\n\t\t\tvar lastLabelSize = labelSizes.last;\r\n\t\t\tvar widestLabelSize = labelSizes.widest;\r\n\t\t\tvar highestLabelSize = labelSizes.highest;\r\n\t\t\tvar lineSpace = tickFonts.minor.lineHeight * 0.4;\r\n\t\t\tvar tickPadding = tickOpts.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\tvar isRotated = me.labelRotation !== 0;\r\n\t\t\t\tvar angleRadians = helpers$1.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\tvar labelHeight = sinRotation * widestLabelSize.width\r\n\t\t\t\t\t+ cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0))\r\n\t\t\t\t\t+ (isRotated ? 0 : 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\tvar offsetLeft = me.getPixelForTick(0) - me.left;\r\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\r\n\t\t\t\tvar paddingLeft, paddingRight;\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 (isRotated) {\r\n\t\t\t\t\tpaddingLeft = isBottom ?\r\n\t\t\t\t\t\tcosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset :\r\n\t\t\t\t\t\tsinRotation * (firstLabelSize.height - firstLabelSize.offset);\r\n\t\t\t\t\tpaddingRight = isBottom ?\r\n\t\t\t\t\t\tsinRotation * (lastLabelSize.height - lastLabelSize.offset) :\r\n\t\t\t\t\t\tcosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpaddingLeft = firstLabelSize.width / 2;\r\n\t\t\t\t\tpaddingRight = lastLabelSize.width / 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Adjust padding taking into account changes in offsets\r\n\t\t\t\t// and add 3 px to move away from canvas edges\r\n\t\t\t\tme.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\r\n\t\t\t\tme.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\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\tvar labelWidth = tickOpts.mirror ? 0 :\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\twidestLabelSize.width + tickPadding + lineSpace;\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\r\n\r\n\t\t\t\tme.paddingTop = firstLabelSize.height / 2;\r\n\t\t\t\tme.paddingBottom = lastLabelSize.height / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tme.width = me._length = chart.width - me.margins.left - me.margins.right;\r\n\t\t\tme.height = minSize.height;\r\n\t\t} else {\r\n\t\t\tme.width = minSize.width;\r\n\t\t\tme.height = me._length = chart.height - me.margins.top - me.margins.bottom;\r\n\t\t}\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.margins.left = Math.max(me.paddingLeft, me.margins.left);\r\n\t\t\tme.margins.top = Math.max(me.paddingTop, me.margins.top);\r\n\t\t\tme.margins.right = Math.max(me.paddingRight, me.margins.right);\r\n\t\t\tme.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers$1.callback(this.options.afterFit, [this]);\r\n\t},\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\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 (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' || rawValue instanceof Number) && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\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_convertTicksToLabels: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar labels, i, ilen;\r\n\r\n\t\tme.ticks = ticks.map(function(tick) {\r\n\t\t\treturn tick.value;\r\n\t\t});\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\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tticks[i].label = labels[i];\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSizes: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelSizes = me._labelSizes;\r\n\r\n\t\tif (!labelSizes) {\r\n\t\t\tme._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\r\n\t\t\tme.longestLabelWidth = labelSizes.widest.width;\r\n\t\t}\r\n\r\n\t\treturn labelSizes;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_parseValue: function(value) {\r\n\t\tvar start, end, min, max;\r\n\r\n\t\tif (isArray(value)) {\r\n\t\t\tstart = +this.getRightValue(value[0]);\r\n\t\t\tend = +this.getRightValue(value[1]);\r\n\t\t\tmin = Math.min(start, end);\r\n\t\t\tmax = Math.max(start, end);\r\n\t\t} else {\r\n\t\t\tvalue = +this.getRightValue(value);\r\n\t\t\tstart = undefined;\r\n\t\t\tend = value;\r\n\t\t\tmin = value;\r\n\t\t\tmax = value;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tmin: min,\r\n\t\t\tmax: max,\r\n\t\t\tstart: start,\r\n\t\t\tend: end\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getScaleLabel: function(rawValue) {\r\n\t\tvar v = this._parseValue(rawValue);\r\n\t\tif (v.start !== undefined) {\r\n\t\t\treturn '[' + v.start + ', ' + v.end + ']';\r\n\t\t}\r\n\r\n\t\treturn +this.getRightValue(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$1.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$1.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$1.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\tvar numTicks = me._ticks.length;\r\n\t\tvar tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\r\n\r\n\t\treturn index < 0 || index > numTicks - 1\r\n\t\t\t? null\r\n\t\t\t: me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\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\r\n\t\tif (me._reversePixels) {\r\n\t\t\tdecimal = 1 - decimal;\r\n\t\t}\r\n\r\n\t\treturn me._startPixel + decimal * me._length;\r\n\t},\r\n\r\n\tgetDecimalForPixel: function(pixel) {\r\n\t\tvar decimal = (pixel - this._startPixel) / this._length;\r\n\t\treturn this._reversePixels ? 1 - decimal : decimal;\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 me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar axisLength = me._length;\r\n\t\tvar ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\r\n\t\tvar majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\r\n\t\tvar numMajorIndices = majorIndices.length;\r\n\t\tvar first = majorIndices[0];\r\n\t\tvar last = majorIndices[numMajorIndices - 1];\r\n\t\tvar i, ilen, spacing, avgMajorSpacing;\r\n\r\n\t\t// If there are too many major ticks to display them all\r\n\t\tif (numMajorIndices > ticksLimit) {\r\n\t\t\tskipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\r\n\t\tspacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\r\n\r\n\t\tif (numMajorIndices > 0) {\r\n\t\t\tfor (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\r\n\t\t\t\tskip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\r\n\t\t\t}\r\n\t\t\tavgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\r\n\t\t\tskip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\r\n\t\t\tskip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\t\tskip(ticks, spacing);\r\n\t\treturn nonSkipped(ticks);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_tickSize: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\t// Calculate space needed by label in axis direction.\r\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\r\n\t\tvar cos = Math.abs(Math.cos(rot));\r\n\t\tvar sin = Math.abs(Math.sin(rot));\r\n\r\n\t\tvar labelSizes = me._getLabelSizes();\r\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\r\n\t\tvar w = labelSizes ? labelSizes.widest.width + padding : 0;\r\n\t\tvar h = labelSizes ? labelSizes.highest.height + padding : 0;\r\n\r\n\t\t// Calculate space needed for 1 tick in axis direction.\r\n\t\treturn me.isHorizontal()\r\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\r\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_isVisible: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar display = me.options.display;\r\n\t\tvar i, ilen, meta;\r\n\r\n\t\tif (display !== 'auto') {\r\n\t\t\treturn !!display;\r\n\t\t}\r\n\r\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\r\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeGridLineItems: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar options = me.options;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar position = options.position;\r\n\t\tvar offsetGridLines = gridLines.offsetGridLines;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\r\n\r\n\t\tvar tl = getTickMarkLength(gridLines);\r\n\t\tvar items = [];\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar axisHalfWidth = axisWidth / 2;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar alignBorderValue = function(pixel) {\r\n\t\t\treturn alignPixel(chart, pixel, axisWidth);\r\n\t\t};\r\n\t\tvar borderValue, i, tick, lineValue, alignedLineValue;\r\n\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\tborderValue = alignBorderValue(me.bottom);\r\n\t\t\tty1 = me.bottom - tl;\r\n\t\t\tty2 = borderValue - axisHalfWidth;\r\n\t\t\ty1 = alignBorderValue(chartArea.top) + axisHalfWidth;\r\n\t\t\ty2 = chartArea.bottom;\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\tborderValue = alignBorderValue(me.top);\r\n\t\t\ty1 = chartArea.top;\r\n\t\t\ty2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\r\n\t\t\tty1 = borderValue + axisHalfWidth;\r\n\t\t\tty2 = me.top + tl;\r\n\t\t} else if (position === 'left') {\r\n\t\t\tborderValue = alignBorderValue(me.right);\r\n\t\t\ttx1 = me.right - tl;\r\n\t\t\ttx2 = borderValue - axisHalfWidth;\r\n\t\t\tx1 = alignBorderValue(chartArea.left) + axisHalfWidth;\r\n\t\t\tx2 = chartArea.right;\r\n\t\t} else {\r\n\t\t\tborderValue = alignBorderValue(me.left);\r\n\t\t\tx1 = chartArea.left;\r\n\t\t\tx2 = alignBorderValue(chartArea.right) - axisHalfWidth;\r\n\t\t\ttx1 = borderValue + axisHalfWidth;\r\n\t\t\ttx2 = me.left + tl;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ticksLength; ++i) {\r\n\t\t\ttick = ticks[i] || {};\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(tick.label) && i < ticks.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (i === me.zeroLineIndex && options.offset === 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 || 0.0;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\r\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\r\n\t\t\t\tborderDash = gridLines.borderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\r\n\t\t\t}\r\n\r\n\t\t\tlineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\r\n\r\n\t\t\t// Skip if the pixel is out of the range\r\n\t\t\tif (lineValue === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talignedLineValue = alignPixel(chart, lineValue, lineWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignedLineValue;\r\n\t\t\t} else {\r\n\t\t\t\tty1 = ty2 = y1 = y2 = alignedLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titems.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\twidth: lineWidth,\r\n\t\t\t\tcolor: lineColor,\r\n\t\t\t\tborderDash: borderDash,\r\n\t\t\t\tborderDashOffset: borderDashOffset,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titems.ticksLength = ticksLength;\r\n\t\titems.borderValue = borderValue;\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeLabelItems: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar optionTicks = options.ticks;\r\n\t\tvar position = options.position;\r\n\t\tvar isMirrored = optionTicks.mirror;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar fonts = parseTickFontOptions(optionTicks);\r\n\t\tvar tickPadding = optionTicks.padding;\r\n\t\tvar tl = getTickMarkLength(options.gridLines);\r\n\t\tvar rotation = -helpers$1.toRadians(me.labelRotation);\r\n\t\tvar items = [];\r\n\t\tvar i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\ty = me.bottom - tl - tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'left';\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\ty = me.top + tl + tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'right';\r\n\t\t} else if (position === 'left') {\r\n\t\t\tx = me.right - (isMirrored ? 0 : tl) - tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'left' : 'right';\r\n\t\t} else {\r\n\t\t\tx = me.left + (isMirrored ? 0 : tl) + tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'right' : 'left';\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\ttick = ticks[i];\r\n\t\t\tlabel = tick.label;\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(label)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\r\n\t\t\tfont = tick.major ? fonts.major : fonts.minor;\r\n\t\t\tlineHeight = font.lineHeight;\r\n\t\t\tlineCount = isArray(label) ? label.length : 1;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tx = pixel;\r\n\t\t\t\ttextOffset = position === 'top'\r\n\t\t\t\t\t? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight\r\n\t\t\t\t\t: (!rotation ? 0.5 : 0) * lineHeight;\r\n\t\t\t} else {\r\n\t\t\t\ty = pixel;\r\n\t\t\t\ttextOffset = (1 - lineCount) * lineHeight / 2;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\trotation: rotation,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tfont: font,\r\n\t\t\t\ttextOffset: textOffset,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar gridLines = me.options.gridLines;\r\n\r\n\t\tif (!gridLines.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar chart = me.chart;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\r\n\t\tvar width, color, i, ilen, item;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\twidth = item.width;\r\n\t\t\tcolor = item.color;\r\n\r\n\t\t\tif (width && color) {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.lineWidth = width;\r\n\t\t\t\tctx.strokeStyle = color;\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\tctx.setLineDash(item.borderDash);\r\n\t\t\t\t\tctx.lineDashOffset = item.borderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tctx.moveTo(item.tx1, item.ty1);\r\n\t\t\t\t\tctx.lineTo(item.tx2, item.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tctx.moveTo(item.x1, item.y1);\r\n\t\t\t\t\tctx.lineTo(item.x2, item.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.restore();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (axisWidth) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tvar firstLineWidth = axisWidth;\r\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\r\n\t\t\tvar borderValue = items.borderValue;\r\n\t\t\tvar x1, x2, y1, y2;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\ty1 = y2 = borderValue;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\tx1 = x2 = borderValue;\r\n\t\t\t}\r\n\r\n\t\t\tctx.lineWidth = axisWidth;\r\n\t\t\tctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.moveTo(x1, y1);\r\n\t\t\tctx.lineTo(x2, y2);\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\tif (!optionTicks.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar items = me._labelItems || (me._labelItems = me._computeLabelItems());\r\n\t\tvar i, j, ilen, jlen, item, tickFont, label, y;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\ttickFont = item.font;\r\n\r\n\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(item.x, item.y);\r\n\t\t\tctx.rotate(item.rotation);\r\n\t\t\tctx.font = tickFont.string;\r\n\t\t\tctx.fillStyle = tickFont.color;\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.textAlign = item.textAlign;\r\n\r\n\t\t\tlabel = item.label;\r\n\t\t\ty = item.textOffset;\r\n\t\t\tif (isArray(label)) {\r\n\t\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\tctx.fillText('' + label[j], 0, y);\r\n\t\t\t\t\ty += tickFont.lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(label, 0, y);\r\n\t\t\t}\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar options = me.options;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tif (!scaleLabel.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\r\n\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\r\n\t\tvar position = options.position;\r\n\t\tvar rotation = 0;\r\n\t\tvar scaleLabelX, scaleLabelY;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tscaleLabelX = me.left + me.width / 2; // midpoint of the width\r\n\t\t\tscaleLabelY = position === 'bottom'\r\n\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t} else {\r\n\t\t\tvar isLeft = position === 'left';\r\n\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\tscaleLabelY = me.top + me.height / 2;\r\n\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(scaleLabelX, scaleLabelY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\tctx.font = scaleLabelFont.string;\r\n\t\tctx.fillText(scaleLabel.labelString, 0, 0);\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!me._isVisible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._drawGrid(chartArea);\r\n\t\tme._drawTitle();\r\n\t\tme._drawLabels();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_layers: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tz = opts.ticks && opts.ticks.z || 0;\r\n\t\tvar gz = opts.gridLines && opts.gridLines.z || 0;\r\n\r\n\t\tif (!me._isVisible() || tz === gz || me.draw !== me._draw) {\r\n\t\t\t// backward compatibility: draw has been overridden by custom scale\r\n\t\t\treturn [{\r\n\t\t\t\tz: tz,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\tme.draw.apply(me, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\treturn [{\r\n\t\t\tz: gz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawGrid.apply(me, arguments);\r\n\t\t\t\tme._drawTitle.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tz: tz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawLabels.apply(me, arguments);\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\t_getMatchingVisibleMetas: function(type) {\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\treturn me.chart._getSortedVisibleDatasetMetas()\r\n\t\t\t.filter(function(meta) {\r\n\t\t\t\treturn (!type || meta.type === type)\r\n\t\t\t\t\t&& (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\r\n\t\t\t});\r\n\t}\r\n});\r\n\r\nScale.prototype._draw = Scale.prototype.draw;\r\n\r\nvar core_scale = Scale;\n\nvar isNullOrUndef$1 = helpers$1.isNullOrUndef;\r\n\r\nvar defaultConfig = {\r\n\tposition: 'bottom'\r\n};\r\n\r\nvar scale_category = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar min = ticksOpts.min;\r\n\t\tvar max = ticksOpts.max;\r\n\t\tvar minIndex = 0;\r\n\t\tvar maxIndex = labels.length - 1;\r\n\t\tvar findIndex;\r\n\r\n\t\tif (min !== undefined) {\r\n\t\t\t// user specified min value\r\n\t\t\tfindIndex = labels.indexOf(min);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tminIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (max !== undefined) {\r\n\t\t\t// user specified max value\r\n\t\t\tfindIndex = labels.indexOf(max);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tmaxIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.minIndex = minIndex;\r\n\t\tme.maxIndex = maxIndex;\r\n\t\tme.min = labels[minIndex];\r\n\t\tme.max = labels[maxIndex];\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar minIndex = me.minIndex;\r\n\t\tvar maxIndex = me.maxIndex;\r\n\r\n\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\tme.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\r\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\r\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\r\n\t\t}\r\n\r\n\t\treturn me._getLabels()[index];\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar ticks = me.ticks;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (!me.isHorizontal()) {\r\n\t\t\t// For backward compatibility, vertical category scale reverse is inverted.\r\n\t\t\tme._reversePixels = !me._reversePixels;\r\n\t\t}\r\n\r\n\t\tif (!ticks) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._startValue = me.minIndex - (offset ? 0.5 : 0);\r\n\t\tme._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\r\n\t},\r\n\r\n\t// Used to get data value locations.  Value can either be an index or a numerical value\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar valueCategory, labels, idx;\r\n\r\n\t\tif (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\r\n\t\t\tvalue = me.chart.data.datasets[datasetIndex].data[index];\r\n\t\t}\r\n\r\n\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t// not the index of the scale. We need to change that.\r\n\t\tif (!isNullOrUndef$1(value)) {\r\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t}\r\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\tlabels = me._getLabels();\r\n\t\t\tvalue = helpers$1.valueOrDefault(valueCategory, value);\r\n\t\t\tidx = labels.indexOf(value);\r\n\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\tif (isNaN(index)) {\r\n\t\t\t\tindex = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal((index - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticks;\r\n\t\treturn index < 0 || index > ticks.length - 1\r\n\t\t\t? null\r\n\t\t\t: this.getPixelForValue(ticks[index], index + this.minIndex);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\r\n\t\treturn Math.min(Math.max(value, 0), me.ticks.length - 1);\r\n\t},\r\n\r\n\tgetBasePixel: function() {\r\n\t\treturn this.bottom;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\r\nvar isNullOrUndef$2 = helpers$1.isNullOrUndef;\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 {number[]} 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 https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar MIN_SPACING = 1e-14;\r\n\tvar stepSize = generationOptions.stepSize;\r\n\tvar unit = stepSize || 1;\r\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\r\n\tvar min = generationOptions.min;\r\n\tvar max = generationOptions.max;\r\n\tvar precision = generationOptions.precision;\r\n\tvar rmin = dataRange.min;\r\n\tvar rmax = dataRange.max;\r\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\r\n\tvar factor, niceMin, niceMax, numSpaces;\r\n\r\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\r\n\t// such that we can't do the math necessary to generate ticks\r\n\tif (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\r\n\t\treturn [rmin, rmax];\r\n\t}\r\n\r\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\r\n\tif (numSpaces > maxNumSpaces) {\r\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\r\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\r\n\t}\r\n\r\n\tif (stepSize || isNullOrUndef$2(precision)) {\r\n\t\t// If a precision is not specified, calculate factor based on spacing\r\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\r\n\t} else {\r\n\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\tfactor = Math.pow(10, precision);\r\n\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t}\r\n\r\n\tniceMin = Math.floor(rmin / spacing) * spacing;\r\n\tniceMax = Math.ceil(rmax / 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 (stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\r\n\t\t\tniceMin = min;\r\n\t\t}\r\n\t\tif (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\r\n\t\t\tniceMax = max;\r\n\t\t}\r\n\t}\r\n\r\n\tnumSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers$1.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\tniceMin = Math.round(niceMin * factor) / factor;\r\n\tniceMax = Math.round(niceMax * factor) / factor;\r\n\tticks.push(isNullOrUndef$2(min) ? niceMin : min);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\r\n\t}\r\n\tticks.push(isNullOrUndef$2(max) ? niceMax : max);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar scale_linearbase = core_scale.extend({\r\n\tgetRightValue: function(value) {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\treturn +value;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t// axis, they can manually override it\r\n\t\tif (tickOpts.beginAtZero) {\r\n\t\t\tvar minSign = helpers$1.sign(me.min);\r\n\t\t\tvar maxSign = helpers$1.sign(me.max);\r\n\r\n\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t// move the top up to 0\r\n\t\t\t\tme.max = 0;\r\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t// move the bottom down to 0\r\n\t\t\t\tme.min = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\tif (tickOpts.min !== undefined) {\r\n\t\t\tme.min = tickOpts.min;\r\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t} else {\r\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tickOpts.max !== undefined) {\r\n\t\t\tme.max = tickOpts.max;\r\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t} else {\r\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (setMin !== setMax) {\r\n\t\t\t// We set the min or the max but not both.\r\n\t\t\t// So ensure that our range is good\r\n\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\tif (me.min >= me.max) {\r\n\t\t\t\tif (setMin) {\r\n\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tme.max++;\r\n\r\n\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\tme.min--;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar stepSize = tickOpts.stepSize;\r\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\r\n\t\tvar maxTicks;\r\n\r\n\t\tif (stepSize) {\r\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\r\n\t\t} else {\r\n\t\t\tmaxTicks = me._computeTickLimit();\r\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\r\n\t\t}\r\n\r\n\t\tif (maxTicksLimit) {\r\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\r\n\t\t}\r\n\r\n\t\treturn maxTicks;\r\n\t},\r\n\r\n\t_computeTickLimit: function() {\r\n\t\treturn Number.POSITIVE_INFINITY;\r\n\t},\r\n\r\n\thandleDirectionalChanges: noop,\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\r\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\tvar maxTicks = me.getTickLimit();\r\n\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\tvar numericGeneratorOptions = {\r\n\t\t\tmaxTicks: maxTicks,\r\n\t\t\tmin: tickOpts.min,\r\n\t\t\tmax: tickOpts.max,\r\n\t\t\tprecision: tickOpts.precision,\r\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\tme.handleDirectionalChanges();\r\n\r\n\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// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar ticks = me.getTicks();\r\n\t\tvar start = me.min;\r\n\t\tvar end = me.max;\r\n\t\tvar offset;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (me.options.offset && ticks.length) {\r\n\t\t\toffset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\r\n\t\t\tstart -= offset;\r\n\t\t\tend += offset;\r\n\t\t}\r\n\t\tme._startValue = start;\r\n\t\tme._endValue = end;\r\n\t\tme._valueRange = end - start;\r\n\t}\r\n});\n\nvar defaultConfig$1 = {\r\n\tposition: 'left',\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t}\r\n};\r\n\r\nvar DEFAULT_MIN = 0;\r\nvar DEFAULT_MAX = 1;\r\n\r\nfunction getOrCreateStack(stacks, stacked, meta) {\r\n\tvar key = [\r\n\t\tmeta.type,\r\n\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\tstacked === undefined && meta.stack === undefined ? meta.index : '',\r\n\t\tmeta.stack\r\n\t].join('.');\r\n\r\n\tif (stacks[key] === undefined) {\r\n\t\tstacks[key] = {\r\n\t\t\tpos: [],\r\n\t\t\tneg: []\r\n\t\t};\r\n\t}\r\n\r\n\treturn stacks[key];\r\n}\r\n\r\nfunction stackData(scale, stacks, meta, data) {\r\n\tvar opts = scale.options;\r\n\tvar stacked = opts.stacked;\r\n\tvar stack = getOrCreateStack(stacks, stacked, meta);\r\n\tvar pos = stack.pos;\r\n\tvar neg = stack.neg;\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpos[i] = pos[i] || 0;\r\n\t\tneg[i] = neg[i] || 0;\r\n\r\n\t\tif (opts.relativePoints) {\r\n\t\t\tpos[i] = 100;\r\n\t\t} else if (value.min < 0 || value.max < 0) {\r\n\t\t\tneg[i] += value.min;\r\n\t\t} else {\r\n\t\t\tpos[i] += value.max;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateMinMax(scale, meta, data) {\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tscale.min = Math.min(scale.min, value.min);\r\n\t\tscale.max = Math.max(scale.max, value.max);\r\n\t}\r\n}\r\n\r\nvar scale_linear = scale_linearbase.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = me._getMatchingVisibleMetas();\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tvar stacks = {};\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, meta, data, values;\r\n\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (i = 0; !hasStacks && i < ilen; ++i) {\r\n\t\t\t\tmeta = metasets[i];\r\n\t\t\t\thasStacks = meta.stack !== undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\tdata = datasets[meta.index].data;\r\n\t\t\tif (hasStacks) {\r\n\t\t\t\tstackData(me, stacks, meta, data);\r\n\t\t\t} else {\r\n\t\t\t\tupdateMinMax(me, meta, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.each(stacks, function(stackValues) {\r\n\t\t\tvalues = stackValues.pos.concat(stackValues.neg);\r\n\t\t\tme.min = Math.min(me.min, helpers$1.min(values));\r\n\t\t\tme.max = Math.max(me.max, helpers$1.max(values));\r\n\t\t});\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\tme.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickFont;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\treturn Math.ceil(me.width / 40);\r\n\t\t}\r\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\r\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\r\n\t},\r\n\r\n\t// Called after the ticks are built. We need\r\n\thandleDirectionalChanges: function() {\r\n\t\tif (!this.isHorizontal()) {\r\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\tthis.ticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\t// Utils\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\treturn me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\treturn this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticksAsNumbers;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\r\nvar log10 = helpers$1.math.log10;\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 {number[]} array of tick values\r\n */\r\nfunction generateTicks$1(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\r\n\tvar tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(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(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(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$b(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar defaultConfig$2 = {\r\n\tposition: 'left',\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.logarithmic\r\n\t}\r\n};\r\n\r\n// TODO(v3): change this to positiveOrDefault\r\nfunction nonNegativeOrDefault(value, defaultValue) {\r\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\r\n}\r\n\r\nvar scale_logarithmic = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tfunction IDMatches(meta) {\r\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t}\r\n\t\tvar datasetIndex, meta, value, data, i, ilen;\r\n\r\n\t\t// Calculate Range\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\t\tme.minNotZero = Number.POSITIVE_INFINITY;\r\n\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (opts.stacked || hasStacks) {\r\n\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar key = [\r\n\t\t\t\t\tmeta.type,\r\n\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((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\tmeta.stack\r\n\t\t\t\t].join('.');\r\n\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\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}\r\n\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalues[i] = values[i] || 0;\r\n\t\t\t\t\t\tvalues[i] += 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\thelpers$1.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\r\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\r\n\t\t\t\t\tme.min = Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = Math.max(me.max, maxVal);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tme.min = Math.min(value.min, me.min);\r\n\t\t\t\t\t\tme.max = Math.max(value.max, me.max);\r\n\r\n\t\t\t\t\t\tif (value.min !== 0) {\r\n\t\t\t\t\t\t\tme.minNotZero = Math.min(value.min, me.minNotZero);\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\t\t}\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) ? me.min : null;\r\n\t\tme.max = helpers$1.isFinite(me.max) ? me.max : null;\r\n\t\tme.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\tthis.handleTickRangeOptions();\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar DEFAULT_MIN = 1;\r\n\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\r\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\r\n\t\t\t\tme.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\r\n\t\t\t} else {\r\n\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (me.min === null) {\r\n\t\t\tme.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\r\n\t\t}\r\n\t\tif (me.max === null) {\r\n\t\t\tme.max = me.min !== 0\r\n\t\t\t\t? Math.pow(10, Math.floor(log10(me.min)) + 1)\r\n\t\t\t\t: DEFAULT_MAX;\r\n\t\t}\r\n\t\tif (me.minNotZero === null) {\r\n\t\t\tif (me.min > 0) {\r\n\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t} else if (me.max < 1) {\r\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\r\n\t\t\t} else {\r\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\tvar generationOptions = {\r\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\r\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\r\n\r\n\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// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\treverse = !reverse;\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t\tif (reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\r\n\t},\r\n\r\n\t// Get the correct tooltip label\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.tickValues;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the value of the first tick.\r\n\t * @param {number} value - The minimum not zero value.\r\n\t * @return {number} The first tick value.\r\n\t * @private\r\n\t */\r\n\t_getFirstTickValue: function(value) {\r\n\t\tvar exp = Math.floor(log10(value));\r\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\treturn significand * Math.pow(10, exp);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar start = me.min;\r\n\t\tvar offset = 0;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (start === 0) {\r\n\t\t\tstart = me._getFirstTickValue(me.minNotZero);\r\n\t\t\toffset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\r\n\t\t}\r\n\r\n\t\tme._startValue = log10(start);\r\n\t\tme._valueOffset = offset;\r\n\t\tme._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = 0;\r\n\r\n\t\tvalue = +me.getRightValue(value);\r\n\r\n\t\tif (value > me.min && value > 0) {\r\n\t\t\tdecimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal(decimal);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = me.getDecimalForPixel(pixel);\r\n\t\treturn decimal === 0 && me.min === 0\r\n\t\t\t? 0\r\n\t\t\t: Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\r\nvar resolve$4 = helpers$1.options.resolve;\r\n\r\nvar defaultConfig$3 = {\r\n\tdisplay: true,\r\n\r\n\t// Boolean - Whether to animate scaling the chart from the centre\r\n\tanimate: true,\r\n\tposition: 'chartArea',\r\n\r\n\tangleLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\tgridLines: {\r\n\t\tcircular: false\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\t// Boolean - Show a backdrop to the scale label\r\n\t\tshowLabelBackdrop: true,\r\n\r\n\t\t// String - The colour of the label backdrop\r\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\tbackdropPaddingY: 2,\r\n\r\n\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\tbackdropPaddingX: 2,\r\n\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t},\r\n\r\n\tpointLabels: {\r\n\t\t// Boolean - if true, show point labels\r\n\t\tdisplay: true,\r\n\r\n\t\t// Number - Point label font size in pixels\r\n\t\tfontSize: 10,\r\n\r\n\t\t// Function - Used to convert point labels\r\n\t\tcallback: function(label) {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getTickBackdropHeight(opts) {\r\n\tvar tickOpts = opts.ticks;\r\n\r\n\tif (tickOpts.display && opts.display) {\r\n\t\treturn valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nfunction measureLabelSize(ctx, lineHeight, label) {\r\n\tif (helpers$1.isArray(label)) {\r\n\t\treturn {\r\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\r\n\t\t\th: label.length * lineHeight\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tw: ctx.measureText(label).width,\r\n\t\th: lineHeight\r\n\t};\r\n}\r\n\r\nfunction determineLimits(angle, pos, size, min, max) {\r\n\tif (angle === min || angle === max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - (size / 2),\r\n\t\t\tend: pos + (size / 2)\r\n\t\t};\r\n\t} else if (angle < min || angle > max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - size,\r\n\t\t\tend: pos\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tstart: pos,\r\n\t\tend: pos + size\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper function to fit a radial linear scale with point labels\r\n */\r\nfunction fitWithPointLabels(scale) {\r\n\r\n\t// Right, this is really confusing and there is a lot of maths going on here\r\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t//\r\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t//\r\n\t// Solution:\r\n\t//\r\n\t// We assume the radius of the polygon is half the size of the canvas at first\r\n\t// at each index we check if the text overlaps.\r\n\t//\r\n\t// Where it does, we store that angle and that index.\r\n\t//\r\n\t// After finding the largest index and angle we calculate how much we need to remove\r\n\t// from the shape radius to move the point inwards by that x.\r\n\t//\r\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t// along with labels.\r\n\t//\r\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t//\r\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t// and position it in the most space efficient manner\r\n\t//\r\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\r\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\r\n\r\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\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\tvar furthestLimits = {\r\n\t\tl: 0,\r\n\t\tr: scale.width,\r\n\t\tt: 0,\r\n\t\tb: scale.height - scale.paddingTop\r\n\t};\r\n\tvar furthestAngles = {};\r\n\tvar i, textSize, pointPosition;\r\n\r\n\tscale.ctx.font = plFont.string;\r\n\tscale._pointLabelSizes = [];\r\n\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tfor (i = 0; i < valueCount; i++) {\r\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\r\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\r\n\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\r\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t}\r\n\t}\r\n\r\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\r\n}\r\n\r\nfunction getTextAlignForAngle(angle) {\r\n\tif (angle === 0 || angle === 180) {\r\n\t\treturn 'center';\r\n\t} else if (angle < 180) {\r\n\t\treturn 'left';\r\n\t}\r\n\r\n\treturn 'right';\r\n}\r\n\r\nfunction fillText(ctx, text, position, lineHeight) {\r\n\tvar y = position.y + lineHeight / 2;\r\n\tvar i, ilen;\r\n\r\n\tif (helpers$1.isArray(text)) {\r\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\r\n\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\ty += lineHeight;\r\n\t\t}\r\n\t} else {\r\n\t\tctx.fillText(text, position.x, y);\r\n\t}\r\n}\r\n\r\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\tif (angle === 90 || angle === 270) {\r\n\t\tposition.y -= (textSize.h / 2);\r\n\t} else if (angle > 270 || angle < 90) {\r\n\t\tposition.y -= textSize.h;\r\n\t}\r\n}\r\n\r\nfunction drawPointLabels(scale) {\r\n\tvar ctx = scale.ctx;\r\n\tvar opts = scale.options;\r\n\tvar pointLabelOpts = opts.pointLabels;\r\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\r\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\r\n\r\n\tctx.save();\r\n\r\n\tctx.font = plFont.string;\r\n\tctx.textBaseline = 'middle';\r\n\r\n\tfor (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t// Extra pixels out for some label spacing\r\n\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\r\n\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\r\n\r\n\t\t// Keep this in loop since we may support array properties here\r\n\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\r\n\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians);\r\n\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\tfillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\r\n\t}\r\n\tctx.restore();\r\n}\r\n\r\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\tvar ctx = scale.ctx;\r\n\tvar circular = gridLineOpts.circular;\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\r\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\r\n\tvar pointPosition;\r\n\r\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.save();\r\n\tctx.strokeStyle = lineColor;\r\n\tctx.lineWidth = lineWidth;\r\n\tif (ctx.setLineDash) {\r\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\r\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tif (circular) {\r\n\t\t// Draw circular arcs between the points\r\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t} else {\r\n\t\t// Draw straight lines connecting each index\r\n\t\tpointPosition = scale.getPointPosition(0, radius);\r\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t}\r\n\t}\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n\tctx.restore();\r\n}\r\n\r\nfunction numberOrZero(param) {\r\n\treturn helpers$1.isNumber(param) ? param : 0;\r\n}\r\n\r\nvar scale_radialLinear = scale_linearbase.extend({\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tme.width = me.maxWidth;\r\n\t\tme.height = me.maxHeight;\r\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\r\n\t\tme.xCenter = Math.floor(me.width / 2);\r\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\r\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t// Point labels\r\n\t\tme.pointLabels = me.chart.data.labels.map(function() {\r\n\t\t\tvar label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\r\n\t\t\treturn label || label === 0 ? label : '';\r\n\t\t});\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (opts.display && opts.pointLabels.display) {\r\n\t\t\tfitWithPointLabels(me);\r\n\t\t} else {\r\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Set radius reductions and determine new radius and center point\r\n\t * @private\r\n\t */\r\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\tvar me = this;\r\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\tme.drawingArea = Math.min(\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t},\r\n\r\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\tvar me = this;\r\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\r\n\r\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\r\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\r\n\t},\r\n\r\n\tgetIndexAngle: function(index) {\r\n\t\tvar chart = this.chart;\r\n\t\tvar angleMultiplier = 360 / chart.data.labels.length;\r\n\t\tvar options = chart.options || {};\r\n\t\tvar startAngle = options.startAngle || 0;\r\n\r\n\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\tvar angle = (index * angleMultiplier + startAngle) % 360;\r\n\r\n\t\treturn (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\r\n\t},\r\n\r\n\tgetDistanceFromCenterForValue: function(value) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Take into account half font size + the yPadding of the top value\r\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\tif (me.options.ticks.reverse) {\r\n\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t}\r\n\t\treturn (value - me.min) * scalingFactor;\r\n\t},\r\n\r\n\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\tvar me = this;\r\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\treturn {\r\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\r\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\r\n\t\t};\r\n\t},\r\n\r\n\tgetPointPositionForValue: function(index, value) {\r\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t},\r\n\r\n\tgetBasePosition: function(index) {\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.getPointPositionForValue(index || 0,\r\n\t\t\tme.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 * @private\r\n\t */\r\n\t_drawGrid: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\r\n\t\tvar lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\r\n\t\tvar i, offset, position;\r\n\r\n\t\tif (opts.pointLabels.display) {\r\n\t\t\tdrawPointLabels(me);\r\n\t\t}\r\n\r\n\t\tif (gridLineOpts.display) {\r\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\t\tif (index !== 0) {\r\n\t\t\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, offset, index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = lineColor;\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\tctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\r\n\t\t\t\tctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = me.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t\t\toffset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\r\n\t\t\t\tposition = me.getPointPosition(i, offset);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\r\n\t\t\t\tctx.lineTo(position.x, position.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\tif (!tickOpts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar startAngle = me.getIndexAngle(0);\r\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\r\n\t\tvar tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar offset, width;\r\n\r\n\t\tctx.save();\r\n\t\tctx.font = tickFont.string;\r\n\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\tctx.rotate(startAngle);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\tif (index === 0 && !tickOpts.reverse) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\twidth = ctx.measureText(label).width;\r\n\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\r\n\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t-width / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t-offset - tickFont.size / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\twidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\tctx.fillText(label, 0, -offset);\r\n\t\t});\r\n\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: helpers$1.noop\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar deprecated$1 = helpers$1._deprecated;\r\nvar resolve$5 = helpers$1.options.resolve;\r\nvar valueOrDefault$d = helpers$1.valueOrDefault;\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: 1000\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: 60\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: 60\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: 24\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: 30\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: 4\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: 12\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: 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\nfunction getMin(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.min, options.ticks.min);\r\n}\r\n\r\nfunction getMax(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.max, options.ticks.max);\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 https://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$1(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\nfunction toTimestamp(scale, input) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options.time;\r\n\tvar parser = options.parser;\r\n\tvar format = parser || options.format;\r\n\tvar value = input;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\tvalue = parser(value);\r\n\t}\r\n\r\n\t// Only parse if its not a timestamp already\r\n\tif (!helpers$1.isFinite(value)) {\r\n\t\tvalue = typeof format === 'string'\r\n\t\t\t? adapter.parse(value, format)\r\n\t\t\t: adapter.parse(value);\r\n\t}\r\n\r\n\tif (value !== null) {\r\n\t\treturn +value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option for parsing.\r\n\tif (!parser && typeof format === 'function') {\r\n\t\tvalue = format(input);\r\n\r\n\t\t// `format` could return something else than a timestamp, if so, parse it\r\n\t\tif (!helpers$1.isFinite(value)) {\r\n\t\t\tvalue = adapter.parse(value);\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(scale, input) {\r\n\tif (helpers$1.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\r\n\tif (value === null) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue = +scale._adapter.startOf(value, options.round);\r\n\t}\r\n\r\n\treturn value;\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 : 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(scale, numTicks, minUnit, min, max) {\r\n\tvar i, unit;\r\n\r\n\tfor (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\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 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(scale, min, max, capacity) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options;\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar first = min;\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\r\n\t}\r\n\r\n\t// Align first ticks on unit\r\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\r\n\r\n\t// Prevent browser from freezing in case user options request millions of milliseconds\r\n\tif (adapter.diff(max, min, minor) > 100000 * stepSize) {\r\n\t\tthrow min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\r\n\t}\r\n\r\n\tfor (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\tif (time === max || options.bounds === 'ticks') {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the start and end offsets from edges in the form of {start, end}\r\n * where each value is a relative width to the scale and ranges between 0 and 1.\r\n * They add extra margins on the both sides by scaling down the original scale.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar start = 0;\r\n\tvar end = 0;\r\n\tvar first, last;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tstart = 1 - first;\r\n\t\t} else {\r\n\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\r\n\t\t}\r\n\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tend = last;\r\n\t\t} else {\r\n\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {start: start, end: end, factor: 1 / (start + 1 + end)};\r\n}\r\n\r\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\r\n\tvar adapter = scale._adapter;\r\n\tvar first = +adapter.startOf(ticks[0].value, majorUnit);\r\n\tvar last = ticks[ticks.length - 1].value;\r\n\tvar major, index;\r\n\r\n\tfor (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\r\n\t\tindex = map[major];\r\n\t\tif (index >= 0) {\r\n\t\t\tticks[index].major = true;\r\n\t\t}\r\n\t}\r\n\treturn ticks;\r\n}\r\n\r\nfunction ticksFromTimestamps(scale, values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar map = {};\r\n\tvar ilen = values.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmap[value] = i;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: false\r\n\t\t});\r\n\t}\r\n\r\n\t// We set the major ticks separately from the above loop because calling startOf for every tick\r\n\t// is expensive when there is a large number of ticks\r\n\treturn (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\r\n}\r\n\r\nvar defaultConfig$4 = {\r\n\tposition: 'bottom',\r\n\r\n\t/**\r\n\t * Data distribution along the scale:\r\n\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t * - 'series': data are spread at the same distance from each other.\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t * @since 2.7.0\r\n\t */\r\n\tdistribution: 'linear',\r\n\r\n\t/**\r\n\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t * @since 2.7.0\r\n\t */\r\n\tbounds: 'data',\r\n\r\n\tadapters: {},\r\n\ttime: {\r\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\tdisplayFormat: false, // DEPRECATED\r\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\tminUnit: 'millisecond',\r\n\t\tdisplayFormats: {}\r\n\t},\r\n\tticks: {\r\n\t\tautoSkip: false,\r\n\r\n\t\t/**\r\n\t\t * Ticks generation input values:\r\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\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\tsource: 'auto',\r\n\r\n\t\tmajor: {\r\n\t\t\tenabled: false\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar scale_time = core_scale.extend({\r\n\tinitialize: function() {\r\n\t\tthis.mergeTicksOptions();\r\n\t\tcore_scale.prototype.initialize.call(this);\r\n\t},\r\n\r\n\tupdate: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar time = options.time || (options.time = {});\r\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\r\n\r\n\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\tdeprecated$1('time scale', time.format, 'time.format', 'time.parser');\r\n\t\tdeprecated$1('time scale', time.min, 'time.min', 'ticks.min');\r\n\t\tdeprecated$1('time scale', time.max, 'time.max', 'ticks.max');\r\n\r\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\r\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\r\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\r\n\t\t// missing formats on update\r\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\r\n\r\n\t\treturn core_scale.prototype.update.apply(me, arguments);\r\n\t},\r\n\r\n\t/**\r\n\t * Allows data to be referenced via 't' attribute\r\n\t */\r\n\tgetRightValue: function(rawValue) {\r\n\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\trawValue = rawValue.t;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar unit = options.time.unit || 'day';\r\n\t\tvar min = MAX_INTEGER;\r\n\t\tvar max = MIN_INTEGER;\r\n\t\tvar timestamps = [];\r\n\t\tvar datasets = [];\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, data, timestamp, labelsAdded;\r\n\t\tvar dataLabels = me._getLabels();\r\n\r\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(parse(me, dataLabels[i]));\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\tif (helpers$1.isObject(data[0])) {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\r\n\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\tif (!labelsAdded) {\r\n\t\t\t\t\t\ttimestamps = timestamps.concat(labels);\r\n\t\t\t\t\t\tlabelsAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdatasets[i] = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (labels.length) {\r\n\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t}\r\n\r\n\t\tif (timestamps.length) {\r\n\t\t\ttimestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\r\n\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t}\r\n\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\r\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\r\n\r\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\tme.min = Math.min(min, max);\r\n\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t// PRIVATE\r\n\t\tme._table = [];\r\n\t\tme._timestamps = {\r\n\t\t\tdata: timestamps,\r\n\t\t\tdatasets: datasets,\r\n\t\t\tlabels: labels\r\n\t\t};\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar timeOpts = options.time;\r\n\t\tvar timestamps = me._timestamps;\r\n\t\tvar ticks = [];\r\n\t\tvar capacity = me.getLabelCapacity(min);\r\n\t\tvar source = tickOpts.source;\r\n\t\tvar distribution = options.distribution;\r\n\t\tvar i, ilen, timestamp;\r\n\r\n\t\tif (source === 'data' || (source === 'auto' && distribution === 'series')) {\r\n\t\t\ttimestamps = timestamps.data;\r\n\t\t} else if (source === 'labels') {\r\n\t\t\ttimestamps = timestamps.labels;\r\n\t\t} else {\r\n\t\t\ttimestamps = generate(me, min, max, capacity);\r\n\t\t}\r\n\r\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\tmin = timestamps[0];\r\n\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t}\r\n\r\n\t\t// Enforce limits with user min/max options\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// Remove ticks outside the min/max range\r\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\ttimestamp = timestamps[i];\r\n\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\tticks.push(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = min;\r\n\t\tme.max = max;\r\n\r\n\t\t// PRIVATE\r\n\t\t// determineUnitForFormatting relies on the number of ticks so we don't use it when\r\n\t\t// autoSkip is enabled because we don't yet know what the final number of ticks will be\r\n\t\tme._unit = timeOpts.unit || (tickOpts.autoSkip\r\n\t\t\t? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity)\r\n\t\t\t: determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\r\n\t\tme._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined\r\n\t\t\t: determineMajorUnit(me._unit);\r\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, distribution);\r\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\r\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar data = me.chart.data;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\tif (helpers$1.isObject(value)) {\r\n\t\t\tlabel = me.getRightValue(value);\r\n\t\t}\r\n\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\r\n\t\t}\r\n\t\tif (typeof label === 'string') {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\r\n\t},\r\n\r\n\t/**\r\n\t * Function to format an individual tick mark\r\n\t * @private\r\n\t */\r\n\ttickFormatFunction: function(time, index, ticks, format) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar formats = options.time.displayFormats;\r\n\t\tvar minorFormat = formats[me._unit];\r\n\t\tvar majorUnit = me._majorUnit;\r\n\t\tvar majorFormat = formats[majorUnit];\r\n\t\tvar tick = ticks[index];\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar major = majorUnit && majorFormat && tick && tick.major;\r\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\r\n\t\tvar nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\r\n\t\tvar formatter = resolve$5([\r\n\t\t\tnestedTickOpts.callback,\r\n\t\t\tnestedTickOpts.userCallback,\r\n\t\t\ttickOpts.callback,\r\n\t\t\ttickOpts.userCallback\r\n\t\t]);\r\n\r\n\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t},\r\n\r\n\tconvertTicksToLabels: function(ticks) {\r\n\t\tvar labels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetPixelForOffset: function(time) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\r\n\t\treturn me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar time = null;\r\n\r\n\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t}\r\n\r\n\t\tif (time === null) {\r\n\t\t\ttime = parse(me, value);\r\n\t\t}\r\n\r\n\t\tif (time !== null) {\r\n\t\t\treturn me.getPixelForOffset(time);\r\n\t\t}\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.getTicks();\r\n\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\tnull;\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\r\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\r\n\r\n\t\t// DEPRECATION, we should return time directly\r\n\t\treturn me._adapter._create(time);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSize: function(label) {\r\n\t\tvar me = this;\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\tvar angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\r\n\t\tvar cosRotation = Math.cos(angle);\r\n\t\tvar sinRotation = Math.sin(angle);\r\n\t\tvar tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\r\n\r\n\t\treturn {\r\n\t\t\tw: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\r\n\t\t\th: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Crude approximation of what the label width might be\r\n\t * @private\r\n\t */\r\n\tgetLabelWidth: function(label) {\r\n\t\treturn this._getLabelSize(label).w;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetLabelCapacity: function(exampleTime) {\r\n\t\tvar me = this;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar displayFormats = timeOpts.displayFormats;\r\n\r\n\t\t// pick the longest format (milliseconds) for guestimation\r\n\t\tvar format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\r\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\r\n\t\tvar size = me._getLabelSize(exampleLabel);\r\n\t\tvar capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\r\n\r\n\t\tif (me.options.offset) {\r\n\t\t\tcapacity--;\r\n\t\t}\r\n\r\n\t\treturn capacity > 0 ? capacity : 1;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\r\n\tcategory: scale_category,\r\n\tlinear: scale_linear,\r\n\tlogarithmic: scale_logarithmic,\r\n\tradialLinear: scale_radialLinear,\r\n\ttime: scale_time\r\n};\n\nvar FORMATS = {\r\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\r\n\tmillisecond: 'h:mm:ss.SSS a',\r\n\tsecond: 'h:mm:ss a',\r\n\tminute: 'h:mm a',\r\n\thour: 'hA',\r\n\tday: 'MMM D',\r\n\tweek: 'll',\r\n\tmonth: 'MMM YYYY',\r\n\tquarter: '[Q]Q - YYYY',\r\n\tyear: 'YYYY'\r\n};\r\n\r\ncore_adapters._date.override(typeof moment === 'function' ? {\r\n\t_id: 'moment', // DEBUG ONLY\r\n\r\n\tformats: function() {\r\n\t\treturn FORMATS;\r\n\t},\r\n\r\n\tparse: function(value, format) {\r\n\t\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\t\tvalue = moment(value, format);\r\n\t\t} else if (!(value instanceof moment)) {\r\n\t\t\tvalue = moment(value);\r\n\t\t}\r\n\t\treturn value.isValid() ? value.valueOf() : null;\r\n\t},\r\n\r\n\tformat: function(time, format) {\r\n\t\treturn moment(time).format(format);\r\n\t},\r\n\r\n\tadd: function(time, amount, unit) {\r\n\t\treturn moment(time).add(amount, unit).valueOf();\r\n\t},\r\n\r\n\tdiff: function(max, min, unit) {\r\n\t\treturn moment(max).diff(moment(min), unit);\r\n\t},\r\n\r\n\tstartOf: function(time, unit, weekday) {\r\n\t\ttime = moment(time);\r\n\t\tif (unit === 'isoWeek') {\r\n\t\t\treturn time.isoWeekday(weekday).valueOf();\r\n\t\t}\r\n\t\treturn time.startOf(unit).valueOf();\r\n\t},\r\n\r\n\tendOf: function(time, unit) {\r\n\t\treturn moment(time).endOf(unit).valueOf();\r\n\t},\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility with scale.getValueForPixel().\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(time) {\r\n\t\treturn moment(time);\r\n\t},\r\n} : {});\n\ncore_defaults._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\tif (helpers$1.isArray(boundary)) {\r\n\t\t\treturn function(point, i) {\r\n\t\t\t\treturn boundary[i];\r\n\t\t\t};\r\n\t\t}\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 computeLinearBoundary(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.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 (helpers$1.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 computeCircularBoundary(source) {\r\n\tvar scale = source.el._scale;\r\n\tvar options = scale.options;\r\n\tvar length = scale.chart.data.labels.length;\r\n\tvar fill = source.fill;\r\n\tvar target = [];\r\n\tvar start, end, center, i, point;\r\n\r\n\tif (!length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstart = options.ticks.reverse ? scale.max : scale.min;\r\n\tend = options.ticks.reverse ? scale.min : scale.max;\r\n\tcenter = scale.getPointPositionForValue(0, start);\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tpoint = fill === 'start' || fill === 'end'\r\n\t\t\t? scale.getPointPositionForValue(i, fill === 'start' ? start : end)\r\n\t\t\t: scale.getBasePosition(i);\r\n\t\tif (options.gridLines.circular) {\r\n\t\t\tpoint.cx = center.x;\r\n\t\t\tpoint.cy = center.y;\r\n\t\t\tpoint.angle = scale.getIndexAngle(i) - Math.PI / 2;\r\n\t\t}\r\n\t\ttarget.push(point);\r\n\t}\r\n\treturn target;\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar scale = source.el._scale || {};\r\n\r\n\tif (scale.getPointPositionForValue) {\r\n\t\treturn computeCircularBoundary(source);\r\n\t}\r\n\treturn computeLinearBoundary(source);\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, cx, cy, r;\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$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\tif (curve1[0].angle !== undefined) {\r\n\t\tcx = curve1[0].cx;\r\n\t\tcy = curve1[0].cy;\r\n\t\tr = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\r\n\t\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\t\tctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\r\n\t\t}\r\n\t\treturn;\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$1.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, loopOffset;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = count; 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 (loop && loopOffset === undefined && d0) {\r\n\t\t\tloopOffset = i + 1;\r\n\t\t\tilen = count + loopOffset;\r\n\t\t}\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\nvar plugin_filler = {\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\tbeforeDatasetsDraw: function(chart) {\r\n\t\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar meta, i, el, view, points, mapper, color;\r\n\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tmeta = metasets[i].$filler;\r\n\r\n\t\t\tif (!meta || !meta.visible) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tel = meta.el;\r\n\t\t\tview = el._view;\r\n\t\t\tpoints = el._children || [];\r\n\t\t\tmapper = meta.mapper;\r\n\t\t\tcolor = view.backgroundColor || core_defaults.global.defaultColor;\r\n\r\n\t\t\tif (mapper && color && points.length) {\r\n\t\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\t\thelpers$1.canvas.unclipArea(ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\r\nvar noop$1 = helpers$1.noop;\r\nvar valueOrDefault$e = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\talign: 'center',\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\t\tonLeave: 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 datasets = chart.data.datasets;\r\n\t\t\t\tvar options = chart.options.legend || {};\r\n\t\t\t\tvar usePointStyle = options.labels && options.labels.usePointStyle;\r\n\r\n\t\t\t\treturn chart._getSortedDatasetMetas().map(function(meta) {\r\n\t\t\t\t\tvar style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: datasets[meta.index].label,\r\n\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(meta.index),\r\n\t\t\t\t\t\tlineCap: style.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: style.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: style.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: style.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\tpointStyle: style.pointStyle,\r\n\t\t\t\t\t\trotation: style.rotation,\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: meta.index\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 list = document.createElement('ul');\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\tlistItemSpan.style.backgroundColor = datasets[i].backgroundColor;\r\n\t\t\tif (datasets[i].label) {\r\n\t\t\t\tlistItem.appendChild(document.createTextNode(datasets[i].label));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\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 {object} labelopts - the label options on the legend\r\n * @param {number} fontSize - 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 && labelOpts.boxWidth > fontSize ?\r\n\t\tfontSize :\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 = core_element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.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\r\n\t\t/**\r\n \t\t * @private\r\n \t\t */\r\n\t\tme._hoveredItem = null;\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tme.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$1,\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$1,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$1,\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$1,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$1,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers$1.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$1,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$1,\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 labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\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\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\t// Labels\r\n\r\n\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\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\tvar totalHeight = 0;\r\n\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\r\n\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\r\n\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: width,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t});\r\n\r\n\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t} else {\r\n\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\tvar columnHeights = me.columnHeights = [];\r\n\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\tvar currentColWidth = 0;\r\n\t\t\tvar currentColHeight = 0;\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t// If too tall, go to new column\r\n\t\t\t\tif (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\r\n\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\t\t\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get max width\r\n\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\tcurrentColHeight += fontSize + vPadding;\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\ttotalWidth += currentColWidth;\r\n\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\tminSize.width += totalWidth;\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$1,\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 globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor;\r\n\t\tvar lineDefault = globalDefaults.elements.line;\r\n\t\tvar legendHeight = me.height;\r\n\t\tvar columnHeights = me.columnHeights;\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\treturn;\r\n\t\t}\r\n\r\n\t\tvar rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\t\tvar cursor;\r\n\r\n\t\t// Canvas setup\r\n\t\tctx.textAlign = rtlHelper.textAlign('left');\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.lineWidth = 0.5;\r\n\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t// current position\r\n\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the ctx for the box\r\n\t\t\tctx.save();\r\n\r\n\t\t\tvar lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\tctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\r\n\t\t\tctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\tctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\tctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\r\n\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\tctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t}\r\n\r\n\t\t\tif (labelOpts && labelOpts.usePointStyle) {\r\n\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\r\n\t\t\t\tvar centerX = rtlHelper.xPlus(x, boxWidth / 2);\r\n\t\t\t\tvar centerY = y + fontSize / 2;\r\n\r\n\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\r\n\t\t\t} else {\r\n\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\tif (lineWidth !== 0) {\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t};\r\n\r\n\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\tvar xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\r\n\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\tctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar alignmentOffset = function(dimension, blockSize) {\r\n\t\t\tswitch (opts.align) {\r\n\t\t\tcase 'start':\r\n\t\t\t\treturn labelOpts.padding;\r\n\t\t\tcase 'end':\r\n\t\t\t\treturn dimension - blockSize;\r\n\t\t\tdefault: // center\r\n\t\t\t\treturn (dimension - blockSize + labelOpts.padding) / 2;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Horizontal\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tif (isHorizontal) {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + alignmentOffset(legendWidth, lineWidths[0]),\r\n\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\ty: me.top + alignmentOffset(legendHeight, columnHeights[0]),\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\thelpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\r\n\r\n\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\tvar x = cursor.x;\r\n\t\t\tvar y = cursor.y;\r\n\r\n\t\t\trtlHelper.setWidth(me.minSize.width);\r\n\r\n\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\r\n\t\t\t// instead of me.right and me.bottom because me.width and me.height\r\n\t\t\t// may have been changed since me.minSize was calculated\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\r\n\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\tx = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\r\n\t\t\t\t}\r\n\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\r\n\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\tcursor.line++;\r\n\t\t\t\ty = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\r\n\t\t\t}\r\n\r\n\t\t\tvar realX = rtlHelper.x(x);\r\n\r\n\t\t\tdrawLegendBox(realX, y, legendItem);\r\n\r\n\t\t\thitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\r\n\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t// Fill the actual label\r\n\t\t\tfillText(realX, y, legendItem, textWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor.x += width + labelOpts.padding;\r\n\t\t\t} else {\r\n\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLegendItemAt: function(x, y) {\r\n\t\tvar me = this;\r\n\t\tvar i, hitBox, lh;\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\tlh = me.legendHitBoxes;\r\n\t\t\tfor (i = 0; i < lh.length; ++i) {\r\n\t\t\t\thitBox = 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\treturn me.legendItems[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\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 */\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 hoveredItem;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover && !opts.onLeave) {\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\thoveredItem = me._getLegendItemAt(e.x, e.y);\r\n\r\n\t\tif (type === 'click') {\r\n\t\t\tif (hoveredItem && opts.onClick) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\r\n\t\t\t\tif (me._hoveredItem) {\r\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\r\n\t\t\t\t}\r\n\t\t\t\tme._hoveredItem = hoveredItem;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.onHover && hoveredItem) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t}\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\tcore_layouts.configure(chart, legend, legendOpts);\r\n\tcore_layouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nvar plugin_legend = {\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$1.mergeIf(legendOpts, core_defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tcore_layouts.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\tcore_layouts.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};\n\nvar noop$2 = helpers$1.noop;\r\n\r\ncore_defaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\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 = core_element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.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$2,\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$2,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$2,\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$2,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$2,\r\n\tbuildLabels: noop$2,\r\n\tafterBuildLabels: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$2,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar minSize = me.minSize = {};\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar lineCount, textSize;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\r\n\t\ttextSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\r\n\r\n\t\tme.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\r\n\t\tme.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\r\n\t},\r\n\tafterFit: noop$2,\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 opts = me.options;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\r\n\t\tvar lineHeight = fontOpts.lineHeight;\r\n\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\tvar rotation = 0;\r\n\t\tvar top = me.top;\r\n\t\tvar left = me.left;\r\n\t\tvar bottom = me.bottom;\r\n\t\tvar right = me.right;\r\n\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\r\n\t\tctx.font = fontOpts.string;\r\n\r\n\t\t// Horizontal\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\ttitleY = top + offset;\r\n\t\t\tmaxWidth = right - left;\r\n\t\t} else {\r\n\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\tmaxWidth = bottom - top;\r\n\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(titleX, titleY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\tvar text = opts.text;\r\n\t\tif (helpers$1.isArray(text)) {\r\n\t\t\tvar y = 0;\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\ty += lineHeight;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t}\r\n\r\n\t\tctx.restore();\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\tcore_layouts.configure(chart, title, titleOpts);\r\n\tcore_layouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nvar plugin_title = {\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$1.mergeIf(titleOpts, core_defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tcore_layouts.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\tcore_layouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\n\nvar plugins = {};\r\nvar filler = plugin_filler;\r\nvar legend = plugin_legend;\r\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\r\n * @namespace Chart\r\n */\r\n\r\n\r\ncore_controller.helpers = helpers$1;\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\ncore_helpers();\r\n\r\ncore_controller._adapters = core_adapters;\r\ncore_controller.Animation = core_animation;\r\ncore_controller.animationService = core_animations;\r\ncore_controller.controllers = controllers;\r\ncore_controller.DatasetController = core_datasetController;\r\ncore_controller.defaults = core_defaults;\r\ncore_controller.Element = core_element;\r\ncore_controller.elements = elements;\r\ncore_controller.Interaction = core_interaction;\r\ncore_controller.layouts = core_layouts;\r\ncore_controller.platform = platform;\r\ncore_controller.plugins = core_plugins;\r\ncore_controller.Scale = core_scale;\r\ncore_controller.scaleService = core_scaleService;\r\ncore_controller.Ticks = core_ticks;\r\ncore_controller.Tooltip = core_tooltip;\r\n\r\n// Register built-in scales\r\n\r\ncore_controller.helpers.each(scales, function(scale, type) {\r\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\r\n});\r\n\r\n// Load to register built-in adapters (as side effects)\r\n\r\n\r\n// Loading built-in plugins\r\n\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tcore_controller.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\ncore_controller.platform.initialize();\r\n\r\nvar src = core_controller;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = core_controller;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Chart\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Chart = core_controller;\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\ncore_controller.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\ncore_controller.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\ncore_controller.pluginService = core_controller.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\ncore_controller.PluginBase = core_controller.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\ncore_controller.canvasHelpers = core_controller.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.7.3\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.layoutService = core_controller.layouts;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.LinearScaleBase\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.LinearScaleBase = scale_linearbase;\r\n\r\n/**\r\n * Provided for backward compatibility, instead we should create a new Chart\r\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\r\ncore_controller.helpers.each(\r\n\t[\r\n\t\t'Bar',\r\n\t\t'Bubble',\r\n\t\t'Doughnut',\r\n\t\t'Line',\r\n\t\t'PolarArea',\r\n\t\t'Radar',\r\n\t\t'Scatter'\r\n\t],\r\n\tfunction(klass) {\r\n\t\tcore_controller[klass] = function(ctx, cfg) {\r\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\r\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\r\n\t\t\t}));\r\n\t\t};\r\n\t}\r\n);\n\nreturn src;\n\n})));\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) 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    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n  return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n  return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","module.exports = require('./_hide');\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n  }\n\n  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) {\n    if (safe && target[key]) target[key] = src[key];\n    else hide(target, key, src[key]);\n  } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createStateStorage = function createStateStorage(entries) {\n  return entries.filter(function (entry) {\n    return entry.state;\n  }).reduce(function (memo, entry) {\n    memo[entry.key] = entry.state;\n    return memo;\n  }, {});\n};\n\nvar createMemoryHistory = function createMemoryHistory() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  if (Array.isArray(options)) {\n    options = { entries: options };\n  } else if (typeof options === 'string') {\n    options = { entries: [options] };\n  }\n\n  var getCurrentLocation = function getCurrentLocation() {\n    var entry = entries[current];\n    var path = (0, _PathUtils.createPath)(entry);\n\n    var key = void 0,\n        state = void 0;\n    if (entry.key) {\n      key = entry.key;\n      state = readState(key);\n    }\n\n    var init = (0, _PathUtils.parsePath)(path);\n\n    return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key);\n  };\n\n  var canGo = function canGo(n) {\n    var index = current + n;\n    return index >= 0 && index < entries.length;\n  };\n\n  var go = function go(n) {\n    if (!n) return;\n\n    if (!canGo(n)) {\n      process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0;\n\n      return;\n    }\n\n    current += n;\n    var currentLocation = getCurrentLocation();\n\n    // Change action to POP\n    history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n  };\n\n  var pushLocation = function pushLocation(location) {\n    current += 1;\n\n    if (current < entries.length) entries.splice(current);\n\n    entries.push(location);\n\n    saveState(location.key, location.state);\n  };\n\n  var replaceLocation = function replaceLocation(location) {\n    entries[current] = location;\n    saveState(location.key, location.state);\n  };\n\n  var history = (0, _createHistory2.default)(_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    pushLocation: pushLocation,\n    replaceLocation: replaceLocation,\n    go: go\n  }));\n\n  var _options = options,\n      entries = _options.entries,\n      current = _options.current;\n\n\n  if (typeof entries === 'string') {\n    entries = [entries];\n  } else if (!Array.isArray(entries)) {\n    entries = ['/'];\n  }\n\n  entries = entries.map(function (entry) {\n    return (0, _LocationUtils.createLocation)(entry);\n  });\n\n  if (current == null) {\n    current = entries.length - 1;\n  } else {\n    !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0;\n  }\n\n  var storage = createStateStorage(entries);\n\n  var saveState = function saveState(key, state) {\n    return storage[key] = state;\n  };\n\n  var readState = function readState(key) {\n    return storage[key];\n  };\n\n  return _extends({}, history, {\n    canGo: canGo\n  });\n};\n\nexports.default = createMemoryHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nvar BrowserProtocol = _interopRequireWildcard(_BrowserProtocol);\n\nvar _RefreshProtocol = require('./RefreshProtocol');\n\nvar RefreshProtocol = _interopRequireWildcard(_RefreshProtocol);\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve clean URLs. You can force this\n * behavior using { forceRefresh: true } in options.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n  var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)();\n  var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol;\n\n  var getUserConfirmation = Protocol.getUserConfirmation,\n      getCurrentLocation = Protocol.getCurrentLocation,\n      pushLocation = Protocol.pushLocation,\n      replaceLocation = Protocol.replaceLocation,\n      go = Protocol.go;\n\n\n  var history = (0, _createHistory2.default)(_extends({\n    getUserConfirmation: getUserConfirmation }, options, {\n    getCurrentLocation: getCurrentLocation,\n    pushLocation: pushLocation,\n    replaceLocation: replaceLocation,\n    go: go\n  }));\n\n  var listenerCount = 0,\n      stopListener = void 0;\n\n  var startListener = function startListener(listener, before) {\n    if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo);\n\n    var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopListener();\n    };\n  };\n\n  var listenBefore = function listenBefore(listener) {\n    return startListener(listener, true);\n  };\n\n  var listen = function listen(listener) {\n    return startListener(listener, false);\n  };\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen\n  });\n};\n\nexports.default = createBrowserHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _HashProtocol = require('./HashProtocol');\n\nvar HashProtocol = _interopRequireWildcard(_HashProtocol);\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DefaultQueryKey = '_k';\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!' + path;\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substring(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '/' ? path.substring(1) : path;\n    },\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nvar createHashHistory = function createHashHistory() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Hash history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n  var queryKey = options.queryKey,\n      hashType = options.hashType;\n\n\n  process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(queryKey !== false, 'Using { queryKey: false } no longer works. Instead, just don\\'t ' + 'use location state if you don\\'t want a key in your URL query string') : void 0;\n\n  if (typeof queryKey !== 'string') queryKey = DefaultQueryKey;\n\n  if (hashType == null) hashType = 'slash';\n\n  if (!(hashType in HashPathCoders)) {\n    process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Invalid hash type: %s', hashType) : void 0;\n\n    hashType = 'slash';\n  }\n\n  var pathCoder = HashPathCoders[hashType];\n\n  var getUserConfirmation = HashProtocol.getUserConfirmation;\n\n\n  var getCurrentLocation = function getCurrentLocation() {\n    return HashProtocol.getCurrentLocation(pathCoder, queryKey);\n  };\n\n  var pushLocation = function pushLocation(location) {\n    return HashProtocol.pushLocation(location, pathCoder, queryKey);\n  };\n\n  var replaceLocation = function replaceLocation(location) {\n    return HashProtocol.replaceLocation(location, pathCoder, queryKey);\n  };\n\n  var history = (0, _createHistory2.default)(_extends({\n    getUserConfirmation: getUserConfirmation }, options, {\n    getCurrentLocation: getCurrentLocation,\n    pushLocation: pushLocation,\n    replaceLocation: replaceLocation,\n    go: HashProtocol.go\n  }));\n\n  var listenerCount = 0,\n      stopListener = void 0;\n\n  var startListener = function startListener(listener, before) {\n    if (++listenerCount === 1) stopListener = HashProtocol.startListener(history.transitionTo, pathCoder, queryKey);\n\n    var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopListener();\n    };\n  };\n\n  var listenBefore = function listenBefore(listener) {\n    return startListener(listener, true);\n  };\n\n  var listen = function listen(listener) {\n    return startListener(listener, false);\n  };\n\n  var goIsSupportedWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();\n\n  var go = function go(n) {\n    process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n\n    history.go(n);\n  };\n\n  var createHref = function createHref(path) {\n    return '#' + pathCoder.encodePath(history.createHref(path));\n  };\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    go: go,\n    createHref: createHref\n  });\n};\n\nexports.default = createHashHistory;","'use strict';\n\nexports.__esModule = true;\nexports.useScroll = exports.ScrollContainer = undefined;\n\nvar _ScrollContainer2 = require('./ScrollContainer');\n\nvar _ScrollContainer3 = _interopRequireDefault(_ScrollContainer2);\n\nvar _useScroll2 = require('./useScroll');\n\nvar _useScroll3 = _interopRequireDefault(_useScroll2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.ScrollContainer = _ScrollContainer3.default;\nexports.useScroll = _useScroll3.default;","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n  // Standard Redux middleware definition pattern:\n  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n  var middleware = function middleware(_ref) {\n    var dispatch = _ref.dispatch,\n        getState = _ref.getState;\n    return function (next) {\n      return function (action) {\n        // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n        // If this \"action\" is really a function, call it and return the result.\n        if (typeof action === 'function') {\n          // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n          return action(dispatch, getState, extraArgument);\n        } // Otherwise, pass the action down the middleware chain as usual\n\n\n        return next(action);\n      };\n    };\n  };\n\n  return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","/*\n *          __        ___\n *    _____/ /___  __/ (_)____\n *   / ___/ __/ / / / / / ___/\n *  (__  ) /_/ /_/ / / (__  )\n * /____/\\__/\\__, /_/_/____/\n *          /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The ['<method name>'] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([\\s\\S]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\tvar dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/ /* match max/min/fit-content, fill-available */\n\tvar imgsrcptn = /([^-])(image-set\\()/\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /*   */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 105 /* <at>i */\n\tvar CHARSET = 99 /* <at>c */\n\tvar DOCUMENT = 100 /* <at>d */\n\tvar PAGE = 112 /* <at>p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id  */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array<string>} parent\n\t * @param {Array<string>} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(length++)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tswitch (code = body.charCodeAt(caret)) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\tswitch (second = body.charCodeAt(caret + 1)) {\n\t\t\t\t\t\t\t\t\t\t// /*, //\n\t\t\t\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\t\t\tcaret = delimited(second, caret, eol, body)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\t\t\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// quote tail delimiter is identical to the head delimiter hence noop,\n\t\t\t\t\t\t\t\t// fallthrough clauses have been shifted to the correct tail delimiter\n\t\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\t\t\twhile (caret++ < eol) {\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(caret) === code) {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\t\tif (second === IMPORT || second === CHARSET) {\n\t\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON) {\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::p<l>aceholder, l\n\t\t\t\t\t\t// :read-on<l>y, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :<pattern>\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n\t\t\t\t\t\t\t\t\t\t// /*<!> ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\t// :globa<l>(\n\t\t\t\t\t\t\t\t\t\t\t\tif (pseudo + 7 === caret && tail === 108) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array<string>} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array<string>}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-shadow/text-align/text-transform, a\n\t\t\t\treturn out.charCodeAt(10) === 97 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\tif (out.charCodeAt(8) === DASH) {\n\t\t\t\t\treturn webkit + out + out\n\t\t\t\t}\n\n\t\t\t\t// image-set(...)\n\t\t\t\tif (out.indexOf('image-set(', 11) > 0) {\n\t\t\t\t\treturn out.replace(imgsrcptn, '$1'+webkit+'$2') + out\n\t\t\t\t}\n\n\t\t\t\treturn out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// min/max\n\t\t\tcase 973:\n\t\t\tcase 989: {\n\t\t\t\t// min-/max- height/width/block-size/inline-size\n\t\t\t\tif (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// height/width: min-content / width: max-content\n\t\t\tcase 931:\n\t\t\tcase 953: {\n\t\t\t\tif (dimensionptn.test(input) === true) {\n\t\t\t\t\t// stretch\n\t\t\t\t\tif ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)\n\t\t\t\t\t\treturn property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')\n\t\t\t\t\telse\n\t\t\t\t\t\treturn out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array<string>} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES:  {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array<string>} selectors\n\t * @param {Array<string>} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @param {number} at\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth, at) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (out !== content) {\n\t\t  return out\n\t\t}\n\t}\n\n\t/**\n\t * @param {number} code\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction delimited (code, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\t// /*\n\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\tif (code === STAR) {\n\t\t\t\t\t\tif (body.charCodeAt(i - 1) === STAR &&  index + 2 !== i) {\n\t\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// //\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\tif (code === FOWARDSLASH) {\n\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {number} find\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction match (type, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\tcase type: {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array<function(...?)>|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (typeof plugin === 'function') {\n\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t}\telse if (typeof plugin === 'object') {\n\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar REACT_STATICS = {\n    childContextTypes: true,\n    contextTypes: true,\n    defaultProps: true,\n    displayName: true,\n    getDefaultProps: true,\n    mixins: true,\n    propTypes: true,\n    type: true\n};\n\nvar KNOWN_STATICS = {\n    name: true,\n    length: true,\n    prototype: true,\n    caller: true,\n    arguments: true,\n    arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n    if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n        var keys = Object.getOwnPropertyNames(sourceComponent);\n\n        /* istanbul ignore else */\n        if (isGetOwnPropertySymbolsAvailable) {\n            keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n        }\n\n        for (var i = 0; i < keys.length; ++i) {\n            if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n                try {\n                    targetComponent[keys[i]] = sourceComponent[keys[i]];\n                } catch (error) {\n\n                }\n            }\n        }\n    }\n\n    return targetComponent;\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst CloseIcon = ({\n  classes,\n  classNames,\n  styles,\n  closeIconSize,\n  closeIconSvgPath,\n  onClickCloseIcon,\n  id\n}) => (\n  <button\n    className={cx(classes.closeButton, classNames.closeButton)}\n    style={styles.closeButton}\n    onClick={onClickCloseIcon}\n    id={id}\n  >\n    <svg\n      className={cx(classes.closeIcon, classNames.closeIcon)}\n      style={styles.closeIcon}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={closeIconSize}\n      height={closeIconSize}\n      viewBox=\"0 0 36 36\"\n    >\n      {closeIconSvgPath}\n    </svg>\n  </button>\n);\n\nCloseIcon.propTypes = {\n  classNames: PropTypes.object.isRequired,\n  styles: PropTypes.object.isRequired,\n  classes: PropTypes.object.isRequired,\n  closeIconSize: PropTypes.number.isRequired,\n  closeIconSvgPath: PropTypes.node.isRequired,\n  onClickCloseIcon: PropTypes.func.isRequired,\n  id: PropTypes.string\n};\n\nCloseIcon.defaultProps = {\n  id: null\n}\n\nexport default CloseIcon;\n","const modals = [];\n\n/**\n * Handle the order of the modals.\n * Inspired by the material-ui implementation.\n */\nexport default {\n  /**\n   * Return the modals array\n   */\n  modals: () => modals,\n\n  /**\n   * Register a new modal\n   */\n  add: modal => {\n    if (modals.indexOf(modal) === -1) {\n      modals.push(modal);\n    }\n  },\n\n  /**\n   * Remove a modal\n   */\n  remove: modal => {\n    const index = modals.indexOf(modal);\n    if (index !== -1) {\n      modals.splice(index, 1);\n    }\n  },\n\n  /**\n   * Check if the modal is the first one on the screen\n   */\n  isTopModal: modal => !!modals.length && modals[modals.length - 1] === modal,\n};\n","function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { polyfill } from 'react-lifecycles-compat';\nimport Portal from 'react-minimalist-portal';\nimport CSSTransition from 'react-transition-group/CSSTransition';\nimport cx from 'classnames';\nimport noScroll from 'no-scroll';\nimport FocusTrap from 'focus-trap-react';\nimport CloseIcon from './close-icon';\nimport modalManager from './modal-manager';\nimport cssClasses from './styles.css';\n\nclass Modal extends Component {\n  static blockScroll() {\n    noScroll.on();\n  }\n\n  shouldClose = null;\n\n  state = {\n    showPortal: this.props.open,\n  };\n\n  componentDidMount() {\n    // Block scroll when initial prop is open\n    if (this.props.open) {\n      this.handleOpen();\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    if (prevState.showPortal && !this.state.showPortal) {\n      this.handleClose();\n    } else if (!prevProps.open && this.props.open) {\n      this.handleOpen();\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.props.open) {\n      this.handleClose();\n    }\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (!prevState.showPortal && nextProps.open) {\n      return {\n        showPortal: true,\n      };\n    }\n    return null;\n  }\n\n  handleOpen = () => {\n    modalManager.add(this);\n    if (this.props.blockScroll) {\n      Modal.blockScroll();\n    }\n    document.addEventListener('keydown', this.handleKeydown);\n  };\n\n  handleClose = () => {\n    modalManager.remove(this);\n    if (this.props.blockScroll) {\n      this.unblockScroll();\n    }\n    document.removeEventListener('keydown', this.handleKeydown);\n  };\n\n  handleClickOverlay = event => {\n    if (this.shouldClose === null) {\n      this.shouldClose = true;\n    }\n\n    if (!this.shouldClose) {\n      this.shouldClose = null;\n      return;\n    }\n\n    if (this.props.onOverlayClick) {\n      this.props.onOverlayClick(event);\n    }\n\n    if (this.props.closeOnOverlayClick) {\n      this.props.onClose(event);\n    }\n\n    this.shouldClose = null;\n  };\n\n  handleClickCloseIcon = event => {\n    this.props.onClose(event);\n  };\n\n  handleKeydown = event => {\n    // Only the last modal need to be escaped when pressing the esc key\n    if (event.keyCode !== 27 || !modalManager.isTopModal(this)) {\n      return;\n    }\n\n    if (this.props.onEscKeyDown) {\n      this.props.onEscKeyDown(event);\n    }\n\n    if (this.props.closeOnEsc) {\n      this.props.onClose(event);\n    }\n  };\n\n  handleModalEvent = () => {\n    this.shouldClose = false;\n  };\n\n  handleEntered = () => {\n    if (this.props.onEntered) {\n      this.props.onEntered();\n    }\n  };\n\n  handleExited = () => {\n    if (this.props.onExited) {\n      this.props.onExited();\n    }\n\n    this.setState({ showPortal: false });\n\n    if (this.props.blockScroll) {\n      this.unblockScroll();\n    }\n  };\n\n  unblockScroll = () => {\n    // Restore the scroll only if there is no modal on the screen\n    if (modalManager.modals().length === 0) {\n      noScroll.off();\n    }\n  };\n\n  render() {\n    const {\n      open,\n      center,\n      classes,\n      classNames,\n      styles,\n      showCloseIcon,\n      closeIconSize,\n      closeIconSvgPath,\n      animationDuration,\n      container,\n      focusTrapped,\n      focusTrapOptions,\n      overlayId,\n      modalId,\n      closeIconId\n    } = this.props;\n    const { showPortal } = this.state;\n\n    if (!showPortal) {\n      return null;\n    }\n\n    return (\n      <Portal container={container}>\n        <CSSTransition\n          in={open}\n          appear\n          classNames={{\n            appear: classNames.transitionEnter || classes.transitionEnter,\n            appearActive:\n              classNames.transitionEnterActive || classes.transitionEnterActive,\n            enter: classNames.transitionEnter || classes.transitionEnter,\n            enterActive:\n              classNames.transitionEnterActive || classes.transitionEnterActive,\n            exit: classNames.transitionExit || classes.transitionExit,\n            exitActive:\n              classNames.transitionExitActive || classes.transitionExitActive,\n          }}\n          timeout={animationDuration}\n          onEntered={this.handleEntered}\n          onExited={this.handleExited}\n        >\n          <div\n            className={cx(\n              classes.overlay,\n              center ? classes.overlayCenter : null,\n              classNames.overlay\n            )}\n            onClick={this.handleClickOverlay}\n            style={styles.overlay}\n            id={overlayId}\n          >\n            {focusTrapped ? (\n              <div\n                className={cx(classes.modal, classNames.modal)}\n                style={styles.modal}\n                onMouseDown={this.handleModalEvent}\n                onMouseUp={this.handleModalEvent}\n                onClick={this.handleModalEvent}\n                id={modalId}\n              >\n                <FocusTrap\n                  focusTrapOptions={{\n                    ...{ clickOutsideDeactivates: true },\n                    ...focusTrapOptions,\n                  }}\n                >\n                  {this.props.children}\n                  {showCloseIcon && (\n                    <CloseIcon\n                      classes={classes}\n                      classNames={classNames}\n                      styles={styles}\n                      closeIconSize={closeIconSize}\n                      closeIconSvgPath={closeIconSvgPath}\n                      onClickCloseIcon={this.handleClickCloseIcon}\n                      id={closeIconId}\n                    />\n                  )}\n                </FocusTrap>\n              </div>\n            ) : (\n              <div\n                className={cx(classes.modal, classNames.modal)}\n                style={styles.modal}\n                onMouseDown={this.handleModalEvent}\n                onMouseUp={this.handleModalEvent}\n                onClick={this.handleModalEvent}\n                id={modalId}\n              >\n                {this.props.children}\n                {showCloseIcon && (\n                  <CloseIcon\n                    classes={classes}\n                    classNames={classNames}\n                    styles={styles}\n                    closeIconSize={closeIconSize}\n                    closeIconSvgPath={closeIconSvgPath}\n                    onClickCloseIcon={this.handleClickCloseIcon}\n                    id={closeIconId}\n                  />\n                )}\n              </div>\n            )}\n          </div>\n        </CSSTransition>\n      </Portal>\n    );\n  }\n}\n\nModal.propTypes = {\n  /**\n   * Is the modal closable when user press esc key.\n   */\n  closeOnEsc: PropTypes.bool,\n  /**\n   * Is the modal closable when user click on overlay.\n   */\n  closeOnOverlayClick: PropTypes.bool,\n  /**\n   * Callback fired when the Modal is open and the animation is finished.\n   */\n  onEntered: PropTypes.func,\n  /**\n   * Callback fired when the Modal has exited and the animation is finished.\n   */\n  onExited: PropTypes.func,\n  /**\n   * Callback fired when the Modal is requested to be closed by a click on the overlay or when user press esc key.\n   */\n  onClose: PropTypes.func.isRequired,\n  /**\n   * Callback fired when the escape key is pressed.\n   */\n  onEscKeyDown: PropTypes.func,\n  /**\n   * Callback fired when the overlay is clicked.\n   */\n  onOverlayClick: PropTypes.func,\n  /**\n   * Control if the modal is open or not.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * An object containing classNames to style the modal, can have properties 'overlay' (classname for overlay div), 'modal' (classname for modal content div), 'closeButton' (classname for the button that contain the close icon), 'closeIcon' (classname for close icon svg). You can customize the transition with 'transitionEnter', 'transitionEnterActive', 'transitionExit', 'transitionExitActive'\n   */\n  classNames: PropTypes.object,\n  /**\n   * An object containing the styles objects to style the modal, can have properties 'overlay', 'modal', 'closeButton', 'closeIcon'.\n   */\n  styles: PropTypes.object,\n  /**\n   * The content of the modal.\n   */\n  children: PropTypes.node,\n  /**\n   * @internal\n   */\n  classes: PropTypes.object,\n  /**\n   * Should the dialog be centered.\n   */\n  center: PropTypes.bool,\n  /**\n   * Show the close icon.\n   */\n  showCloseIcon: PropTypes.bool,\n  /**\n   * Close icon size.\n   */\n  closeIconSize: PropTypes.number,\n  /**\n   * A valid svg path to show as icon.\n   */\n  closeIconSvgPath: PropTypes.node,\n  /**\n   * Animation duration in milliseconds.\n   */\n  animationDuration: PropTypes.number,\n  /**\n   * You can specify a container prop which should be of type `Element`. The portal will be rendered inside that element. The default behavior will create a div node and render it at the at the end of document.body.\n   */\n  container: PropTypes.object, // eslint-disable-line\n  /**\n   * Whether to block scrolling when dialog is open\n   */\n  blockScroll: PropTypes.bool,\n  /**\n   * When the modal is open, trap focus within it\n   */\n  focusTrapped: PropTypes.bool,\n  /**\n   * Options to be passed to the focus trap, details available at https://github.com/davidtheclark/focus-trap#focustrap--createfocustrapelement-createoptions\n   */\n  focusTrapOptions: PropTypes.object,\n  /**\n   * id attribute for overlay\n   */\n  overlayId: PropTypes.string,\n  /**\n   * id attribute for modal\n   */\n  modalId: PropTypes.string,\n  /**\n   * id attribute for close icon\n   */\n  closeIconId: PropTypes.string,\n\n};\n\nModal.defaultProps = {\n  classes: cssClasses,\n  closeOnEsc: true,\n  closeOnOverlayClick: true,\n  onEntered: null,\n  onExited: null,\n  onEscKeyDown: null,\n  onOverlayClick: null,\n  showCloseIcon: true,\n  closeIconSize: 28,\n  closeIconSvgPath: (\n    <path d=\"M28.5 9.62L26.38 7.5 18 15.88 9.62 7.5 7.5 9.62 15.88 18 7.5 26.38l2.12 2.12L18 20.12l8.38 8.38 2.12-2.12L20.12 18z\" />\n  ),\n  classNames: {},\n  styles: {},\n  children: null,\n  center: false,\n  animationDuration: 500,\n  blockScroll: true,\n  focusTrapped: false,\n  focusTrapOptions: {},\n  overlayId: null,\n  modalId: null,\n  closeIconId: null\n};\n\npolyfill(Modal);\n\nexport default Modal;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar useCreatePortal = typeof _reactDom2.default.createPortal === 'function';\nvar isBrowser = typeof window !== 'undefined';\n\nvar Portal = function (_Component) {\n  _inherits(Portal, _Component);\n\n  function Portal() {\n    _classCallCheck(this, Portal);\n\n    return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).apply(this, arguments));\n  }\n\n  _createClass(Portal, [{\n    key: 'componentWillMount',\n    value: function componentWillMount() {\n      if (isBrowser) {\n        if (!this.props.container) {\n          this.container = document.createElement('div');\n          document.body.appendChild(this.container);\n        } else {\n          this.container = this.props.container;\n        }\n        this.renderLayer();\n      }\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      this.renderLayer();\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      if (!useCreatePortal) {\n        _reactDom2.default.unmountComponentAtNode(this.container);\n      }\n      if (!this.props.container) {\n        document.body.removeChild(this.container);\n      }\n    }\n  }, {\n    key: 'renderLayer',\n    value: function renderLayer() {\n      if (!useCreatePortal) {\n        _reactDom2.default.unstable_renderSubtreeIntoContainer(this, this.props.children, this.container);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (useCreatePortal) {\n        return _reactDom2.default.createPortal(this.props.children, this.container);\n      }\n      return null;\n    }\n  }]);\n\n  return Portal;\n}(_react.Component);\n\nPortal.propTypes = {\n  children: _propTypes2.default.node, // eslint-disable-line\n  container: _propTypes2.default.object // eslint-disable-line\n};\n\nexports.default = Portal;","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar createFocusTrap = require('focus-trap');\n\nvar checkedProps = ['active', 'paused', 'tag', 'focusTrapOptions', '_createFocusTrap'];\n\nvar FocusTrap = function (_React$Component) {\n  _inherits(FocusTrap, _React$Component);\n\n  function FocusTrap(props) {\n    _classCallCheck(this, FocusTrap);\n\n    var _this = _possibleConstructorReturn(this, (FocusTrap.__proto__ || Object.getPrototypeOf(FocusTrap)).call(this, props));\n\n    _this.setNode = function (el) {\n      _this.node = el;\n    };\n\n    if (typeof document !== 'undefined') {\n      _this.previouslyFocusedElement = document.activeElement;\n    }\n    return _this;\n  }\n\n  _createClass(FocusTrap, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      // We need to hijack the returnFocusOnDeactivate option,\n      // because React can move focus into the element before we arrived at\n      // this lifecycle hook (e.g. with autoFocus inputs). So the component\n      // captures the previouslyFocusedElement in componentWillMount,\n      // then (optionally) returns focus to it in componentWillUnmount.\n      var specifiedFocusTrapOptions = this.props.focusTrapOptions;\n      var tailoredFocusTrapOptions = {\n        returnFocusOnDeactivate: false\n      };\n      for (var optionName in specifiedFocusTrapOptions) {\n        if (!specifiedFocusTrapOptions.hasOwnProperty(optionName)) continue;\n        if (optionName === 'returnFocusOnDeactivate') continue;\n        tailoredFocusTrapOptions[optionName] = specifiedFocusTrapOptions[optionName];\n      }\n\n      this.focusTrap = this.props._createFocusTrap(this.node, tailoredFocusTrapOptions);\n      if (this.props.active) {\n        this.focusTrap.activate();\n      }\n      if (this.props.paused) {\n        this.focusTrap.pause();\n      }\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      if (prevProps.active && !this.props.active) {\n        var returnFocusOnDeactivate = this.props.focusTrapOptions.returnFocusOnDeactivate;\n\n        var returnFocus = returnFocusOnDeactivate || false;\n        var config = { returnFocus: returnFocus };\n        this.focusTrap.deactivate(config);\n      } else if (!prevProps.active && this.props.active) {\n        this.focusTrap.activate();\n      }\n\n      if (prevProps.paused && !this.props.paused) {\n        this.focusTrap.unpause();\n      } else if (!prevProps.paused && this.props.paused) {\n        this.focusTrap.pause();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.focusTrap.deactivate();\n      if (this.props.focusTrapOptions.returnFocusOnDeactivate !== false && this.previouslyFocusedElement && this.previouslyFocusedElement.focus) {\n        this.previouslyFocusedElement.focus();\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var elementProps = {\n        ref: this.setNode\n      };\n\n      // This will get id, className, style, etc. -- arbitrary element props\n      for (var prop in this.props) {\n        if (!this.props.hasOwnProperty(prop)) continue;\n        if (checkedProps.indexOf(prop) !== -1) continue;\n        elementProps[prop] = this.props[prop];\n      }\n\n      return React.createElement(this.props.tag, elementProps, this.props.children);\n    }\n  }]);\n\n  return FocusTrap;\n}(React.Component);\n\nFocusTrap.defaultProps = {\n  active: true,\n  tag: 'div',\n  paused: false,\n  focusTrapOptions: {},\n  _createFocusTrap: createFocusTrap\n};\n\nmodule.exports = FocusTrap;","(function (factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory()) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory()) :\n\t\t\t(window['stylisRuleSheet'] = factory())\n}(function () {\n\n\t'use strict'\n\n\treturn function (insertRule) {\n\t\tvar delimiter = '/*|*/'\n\t\tvar needle = delimiter+'}'\n\n\t\tfunction toSheet (block) {\n\t\t\tif (block)\n\t\t\t\ttry {\n\t\t\t\t\tinsertRule(block + '}')\n\t\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn function ruleSheet (context, content, selectors, parents, line, column, length, ns, depth, at) {\n\t\t\tswitch (context) {\n\t\t\t\t// property\n\t\t\t\tcase 1:\n\t\t\t\t\t// @import\n\t\t\t\t\tif (depth === 0 && content.charCodeAt(0) === 64)\n\t\t\t\t\t\treturn insertRule(content+';'), ''\n\t\t\t\t\tbreak\n\t\t\t\t// selector\n\t\t\t\tcase 2:\n\t\t\t\t\tif (ns === 0)\n\t\t\t\t\t\treturn content + delimiter\n\t\t\t\t\tbreak\n\t\t\t\t// at-rule\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch (ns) {\n\t\t\t\t\t\t// @font-face, @page\n\t\t\t\t\t\tcase 102:\n\t\t\t\t\t\tcase 112:\n\t\t\t\t\t\t\treturn insertRule(selectors[0]+content), ''\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn content + (at === 0 ? delimiter : '')\n\t\t\t\t\t}\n\t\t\t\tcase -2:\n\t\t\t\t\tcontent.split(needle).forEach(toSheet)\n\t\t\t}\n\t\t}\n\t}\n}))\n","var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'UNSAFE_componentWillReceiveProps',\n\t\tvalue: function UNSAFE_componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DayPicker\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"DayPicker\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ad04ceedbfe1663a194a","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DayPicker\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"DayPicker\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 8);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clone = clone;\nexports.isDate = isDate;\nexports.addMonths = addMonths;\nexports.isSameDay = isSameDay;\nexports.isSameMonth = isSameMonth;\nexports.isDayBefore = isDayBefore;\nexports.isDayAfter = isDayAfter;\nexports.isPastDay = isPastDay;\nexports.isFutureDay = isFutureDay;\nexports.isDayBetween = isDayBetween;\nexports.addDayToRange = addDayToRange;\nexports.isDayInRange = isDayInRange;\nexports.getWeekNumber = getWeekNumber;\n/**\n * Clone a date object.\n *\n * @export\n * @param  {Date} d The date to clone\n * @return {Date} The cloned date\n */\nfunction clone(d) {\n  return new Date(d.getTime());\n}\n\n/**\n * Return `true` if the passed value is a valid JavaScript Date object.\n *\n * @export\n * @param {any} value\n * @returns {Boolean}\n */\nfunction isDate(value) {\n  return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * Return `d` as a new date with `n` months added.\n *\n * @export\n * @param {Date} d\n * @param {number} n\n */\nfunction addMonths(d, n) {\n  var newDate = clone(d);\n  newDate.setMonth(d.getMonth() + n);\n  return newDate;\n}\n\n/**\n * Return `true` if two dates are the same day, ignoring the time.\n *\n * @export\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nfunction isSameDay(d1, d2) {\n  if (!d1 || !d2) {\n    return false;\n  }\n  return d1.getDate() === d2.getDate() && d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear();\n}\n\n/**\n * Return `true` if two dates fall in the same month.\n *\n * @export\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nfunction isSameMonth(d1, d2) {\n  if (!d1 || !d2) {\n    return false;\n  }\n  return d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear();\n}\n\n/**\n * Returns `true` if the first day is before the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nfunction isDayBefore(d1, d2) {\n  var day1 = clone(d1).setHours(0, 0, 0, 0);\n  var day2 = clone(d2).setHours(0, 0, 0, 0);\n  return day1 < day2;\n}\n\n/**\n * Returns `true` if the first day is after the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nfunction isDayAfter(d1, d2) {\n  var day1 = clone(d1).setHours(0, 0, 0, 0);\n  var day2 = clone(d2).setHours(0, 0, 0, 0);\n  return day1 > day2;\n}\n\n/**\n * Return `true` if a day is in the past, e.g. yesterday or any day\n * before yesterday.\n *\n * @export\n * @param  {Date}  d\n * @return {Boolean}\n */\nfunction isPastDay(d) {\n  var today = new Date();\n  today.setHours(0, 0, 0, 0);\n  return isDayBefore(d, today);\n}\n\n/**\n * Return `true` if a day is in the future, e.g. tomorrow or any day\n * after tomorrow.\n *\n * @export\n * @param  {Date}  d\n * @return {Boolean}\n */\nfunction isFutureDay(d) {\n  var tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);\n  tomorrow.setHours(0, 0, 0, 0);\n  return d >= tomorrow;\n}\n\n/**\n * Return `true` if day `d` is between days `d1` and `d2`,\n * without including them.\n *\n * @export\n * @param  {Date}  d\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nfunction isDayBetween(d, d1, d2) {\n  var date = clone(d);\n  date.setHours(0, 0, 0, 0);\n  return isDayAfter(date, d1) && isDayBefore(date, d2) || isDayAfter(date, d2) && isDayBefore(date, d1);\n}\n\n/**\n * Add a day to a range and return a new range. A range is an object with\n * `from` and `to` days.\n *\n * @export\n * @param {Date} day\n * @param {Object} range\n * @return {Object} Returns a new range object\n */\nfunction addDayToRange(day) {\n  var range = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { from: null, to: null };\n  var from = range.from,\n      to = range.to;\n\n  if (!from) {\n    from = day;\n  } else if (from && to && isSameDay(from, to) && isSameDay(day, from)) {\n    from = null;\n    to = null;\n  } else if (to && isDayBefore(day, from)) {\n    from = day;\n  } else if (to && isSameDay(day, to)) {\n    from = day;\n    to = day;\n  } else {\n    to = day;\n    if (isDayBefore(to, from)) {\n      to = from;\n      from = day;\n    }\n  }\n\n  return { from: from, to: to };\n}\n\n/**\n * Return `true` if a day is included in a range of days.\n *\n * @export\n * @param  {Date}  day\n * @param  {Object}  range\n * @return {Boolean}\n */\nfunction isDayInRange(day, range) {\n  var from = range.from,\n      to = range.to;\n\n  return from && isSameDay(day, from) || to && isSameDay(day, to) || from && to && isDayBetween(day, from, to);\n}\n\n/**\n * Return the year's week number (as per ISO, i.e. with the week starting from monday)\n * for the given day.\n *\n * @export\n * @param {Date} day\n * @returns {Number}\n */\nfunction getWeekNumber(day) {\n  var date = clone(day);\n  date.setHours(0, 0, 0);\n  date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n  return Math.ceil(((date - new Date(date.getFullYear(), 0, 1)) / 8.64e7 + 1) / 7);\n}\n\nexports.default = {\n  addDayToRange: addDayToRange,\n  addMonths: addMonths,\n  clone: clone,\n  getWeekNumber: getWeekNumber,\n  isDate: isDate,\n  isDayAfter: isDayAfter,\n  isDayBefore: isDayBefore,\n  isDayBetween: isDayBetween,\n  isDayInRange: isDayInRange,\n  isFutureDay: isFutureDay,\n  isPastDay: isPastDay,\n  isSameDay: isSameDay,\n  isSameMonth: isSameMonth\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar LEFT = exports.LEFT = 37;\nvar UP = exports.UP = 38;\nvar RIGHT = exports.RIGHT = 39;\nvar DOWN = exports.DOWN = 40;\nvar ENTER = exports.ENTER = 13;\nvar SPACE = exports.SPACE = 32;\nvar ESC = exports.ESC = 27;\nvar TAB = exports.TAB = 9;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n// Proxy object to map classnames when css modules are not used\n\nexports.default = {\n  container: 'DayPicker',\n  wrapper: 'DayPicker-wrapper',\n  interactionDisabled: 'DayPicker--interactionDisabled',\n  months: 'DayPicker-Months',\n  month: 'DayPicker-Month',\n\n  navBar: 'DayPicker-NavBar',\n  navButtonPrev: 'DayPicker-NavButton DayPicker-NavButton--prev',\n  navButtonNext: 'DayPicker-NavButton DayPicker-NavButton--next',\n  navButtonInteractionDisabled: 'DayPicker-NavButton--interactionDisabled',\n\n  caption: 'DayPicker-Caption',\n  weekdays: 'DayPicker-Weekdays',\n  weekdaysRow: 'DayPicker-WeekdaysRow',\n  weekday: 'DayPicker-Weekday',\n  body: 'DayPicker-Body',\n  week: 'DayPicker-Week',\n  weekNumber: 'DayPicker-WeekNumber',\n  day: 'DayPicker-Day',\n  footer: 'DayPicker-Footer',\n  todayButton: 'DayPicker-TodayButton',\n\n  // default modifiers\n  today: 'today',\n  selected: 'selected',\n  disabled: 'disabled',\n  outside: 'outside'\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.cancelEvent = cancelEvent;\nexports.getFirstDayOfMonth = getFirstDayOfMonth;\nexports.getDaysInMonth = getDaysInMonth;\nexports.getModifiersFromProps = getModifiersFromProps;\nexports.getFirstDayOfWeekFromProps = getFirstDayOfWeekFromProps;\nexports.isRangeOfDates = isRangeOfDates;\nexports.getMonthsDiff = getMonthsDiff;\nexports.getWeekArray = getWeekArray;\nexports.startOfMonth = startOfMonth;\nexports.getDayNodes = getDayNodes;\nexports.nodeListToArray = nodeListToArray;\nexports.hasOwnProp = hasOwnProp;\n\nvar _DateUtils = __webpack_require__(1);\n\nvar _LocaleUtils = __webpack_require__(5);\n\nvar _classNames = __webpack_require__(3);\n\nvar _classNames2 = _interopRequireDefault(_classNames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction cancelEvent(e) {\n  e.preventDefault();\n  e.stopPropagation();\n}\n\nfunction getFirstDayOfMonth(d) {\n  return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nfunction getDaysInMonth(d) {\n  var resultDate = getFirstDayOfMonth(d);\n\n  resultDate.setMonth(resultDate.getMonth() + 1);\n  resultDate.setDate(resultDate.getDate() - 1);\n\n  return resultDate.getDate();\n}\n\nfunction getModifiersFromProps(props) {\n  var modifiers = _extends({}, props.modifiers);\n  if (props.selectedDays) {\n    modifiers[props.classNames.selected] = props.selectedDays;\n  }\n  if (props.disabledDays) {\n    modifiers[props.classNames.disabled] = props.disabledDays;\n  }\n  return modifiers;\n}\n\nfunction getFirstDayOfWeekFromProps(props) {\n  var firstDayOfWeek = props.firstDayOfWeek,\n      _props$locale = props.locale,\n      locale = _props$locale === undefined ? 'en' : _props$locale,\n      _props$localeUtils = props.localeUtils,\n      localeUtils = _props$localeUtils === undefined ? {} : _props$localeUtils;\n\n  if (!isNaN(firstDayOfWeek)) {\n    return firstDayOfWeek;\n  }\n  if (localeUtils.getFirstDayOfWeek) {\n    return localeUtils.getFirstDayOfWeek(locale);\n  }\n  return 0;\n}\n\nfunction isRangeOfDates(value) {\n  return !!(value && value.from && value.to);\n}\n\nfunction getMonthsDiff(d1, d2) {\n  return d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear());\n}\n\nfunction getWeekArray(d) {\n  var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _LocaleUtils.getFirstDayOfWeek)();\n  var fixedWeeks = arguments[2];\n\n  var daysInMonth = getDaysInMonth(d);\n  var dayArray = [];\n\n  var week = [];\n  var weekArray = [];\n\n  for (var i = 1; i <= daysInMonth; i += 1) {\n    dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n  }\n\n  dayArray.forEach(function (day) {\n    if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n      weekArray.push(week);\n      week = [];\n    }\n    week.push(day);\n    if (dayArray.indexOf(day) === dayArray.length - 1) {\n      weekArray.push(week);\n    }\n  });\n\n  // unshift days to start the first week\n  var firstWeek = weekArray[0];\n  for (var _i = 7 - firstWeek.length; _i > 0; _i -= 1) {\n    var outsideDate = (0, _DateUtils.clone)(firstWeek[0]);\n    outsideDate.setDate(firstWeek[0].getDate() - 1);\n    firstWeek.unshift(outsideDate);\n  }\n\n  // push days until the end of the last week\n  var lastWeek = weekArray[weekArray.length - 1];\n  for (var _i2 = lastWeek.length; _i2 < 7; _i2 += 1) {\n    var _outsideDate = (0, _DateUtils.clone)(lastWeek[lastWeek.length - 1]);\n    _outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n    lastWeek.push(_outsideDate);\n  }\n\n  // add extra weeks to reach 6 weeks\n  if (fixedWeeks && weekArray.length < 6) {\n    var lastExtraWeek = void 0;\n\n    for (var _i3 = weekArray.length; _i3 < 6; _i3 += 1) {\n      lastExtraWeek = weekArray[weekArray.length - 1];\n      var lastDay = lastExtraWeek[lastExtraWeek.length - 1];\n      var extraWeek = [];\n\n      for (var j = 0; j < 7; j += 1) {\n        var _outsideDate2 = (0, _DateUtils.clone)(lastDay);\n        _outsideDate2.setDate(lastDay.getDate() + j + 1);\n        extraWeek.push(_outsideDate2);\n      }\n\n      weekArray.push(extraWeek);\n    }\n  }\n\n  return weekArray;\n}\n\nfunction startOfMonth(d) {\n  var newDate = (0, _DateUtils.clone)(d);\n  newDate.setDate(1);\n  newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n  return newDate;\n}\n\nfunction getDayNodes(node, classNames) {\n  var outsideClassName = void 0;\n  if (classNames === _classNames2.default) {\n    // When using CSS modules prefix the modifier as required by the BEM syntax\n    outsideClassName = classNames.day + '--' + classNames.outside;\n  } else {\n    outsideClassName = '' + classNames.outside;\n  }\n  var dayQuery = classNames.day.replace(/ /g, '.');\n  var outsideDayQuery = outsideClassName.replace(/ /g, '.');\n  var selector = '.' + dayQuery + ':not(.' + outsideDayQuery + ')';\n  return node.querySelectorAll(selector);\n}\n\nfunction nodeListToArray(nodeList) {\n  return Array.prototype.slice.call(nodeList, 0);\n}\n\nfunction hasOwnProp(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.formatDay = formatDay;\nexports.formatMonthTitle = formatMonthTitle;\nexports.formatWeekdayShort = formatWeekdayShort;\nexports.formatWeekdayLong = formatWeekdayLong;\nexports.getFirstDayOfWeek = getFirstDayOfWeek;\nexports.getMonths = getMonths;\nvar WEEKDAYS_LONG = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nvar WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nvar MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nfunction formatDay(day) {\n  return day.toDateString();\n}\n\nfunction formatMonthTitle(d) {\n  return MONTHS[d.getMonth()] + ' ' + d.getFullYear();\n}\n\nfunction formatWeekdayShort(i) {\n  return WEEKDAYS_SHORT[i];\n}\n\nfunction formatWeekdayLong(i) {\n  return WEEKDAYS_LONG[i];\n}\n\nfunction getFirstDayOfWeek() {\n  return 0;\n}\n\nfunction getMonths() {\n  return MONTHS;\n}\n\nexports.default = {\n  formatDay: formatDay,\n  formatMonthTitle: formatMonthTitle,\n  formatWeekdayShort: formatWeekdayShort,\n  formatWeekdayLong: formatWeekdayLong,\n  getFirstDayOfWeek: getFirstDayOfWeek,\n  getMonths: getMonths\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.dayMatchesModifier = dayMatchesModifier;\nexports.getModifiersForDay = getModifiersForDay;\n\nvar _DateUtils = __webpack_require__(1);\n\nvar _Helpers = __webpack_require__(4);\n\n/**\n * Return `true` if a date matches the specified modifier.\n *\n * @export\n * @param {Date} day\n * @param {Any} modifier\n * @return {Boolean}\n */\nfunction dayMatchesModifier(day, modifier) {\n  if (!modifier) {\n    return false;\n  }\n  var arr = Array.isArray(modifier) ? modifier : [modifier];\n  return arr.some(function (mod) {\n    if (!mod) {\n      return false;\n    }\n    if (mod instanceof Date) {\n      return (0, _DateUtils.isSameDay)(day, mod);\n    }\n    if ((0, _Helpers.isRangeOfDates)(mod)) {\n      return (0, _DateUtils.isDayInRange)(day, mod);\n    }\n    if (mod.after && mod.before && (0, _DateUtils.isDayAfter)(mod.before, mod.after)) {\n      return (0, _DateUtils.isDayAfter)(day, mod.after) && (0, _DateUtils.isDayBefore)(day, mod.before);\n    }\n    if (mod.after && mod.before && ((0, _DateUtils.isDayAfter)(mod.after, mod.before) || (0, _DateUtils.isSameDay)(mod.after, mod.before))) {\n      return (0, _DateUtils.isDayAfter)(day, mod.after) || (0, _DateUtils.isDayBefore)(day, mod.before);\n    }\n    if (mod.after) {\n      return (0, _DateUtils.isDayAfter)(day, mod.after);\n    }\n    if (mod.before) {\n      return (0, _DateUtils.isDayBefore)(day, mod.before);\n    }\n    if (mod.daysOfWeek) {\n      return mod.daysOfWeek.some(function (dayOfWeek) {\n        return day.getDay() === dayOfWeek;\n      });\n    }\n    if (typeof mod === 'function') {\n      return mod(day);\n    }\n    return false;\n  });\n}\n\n/**\n * Return the modifiers matching the given day for the given\n * object of modifiers.\n *\n * @export\n * @param {Date} day\n * @param {Object} [modifiersObj={}]\n * @return {Array}\n */\nfunction getModifiersForDay(day) {\n  var modifiersObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  return Object.keys(modifiersObj).reduce(function (modifiers, modifierName) {\n    var value = modifiersObj[modifierName];\n    if (dayMatchesModifier(day, value)) {\n      modifiers.push(modifierName);\n    }\n    return modifiers;\n  }, []);\n}\n\nexports.default = { dayMatchesModifier: dayMatchesModifier, getModifiersForDay: getModifiersForDay };\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ModifiersUtils = exports.LocaleUtils = exports.DateUtils = exports.DayPicker = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Caption = __webpack_require__(9);\n\nvar _Caption2 = _interopRequireDefault(_Caption);\n\nvar _Navbar = __webpack_require__(10);\n\nvar _Navbar2 = _interopRequireDefault(_Navbar);\n\nvar _Month = __webpack_require__(11);\n\nvar _Month2 = _interopRequireDefault(_Month);\n\nvar _Weekday = __webpack_require__(14);\n\nvar _Weekday2 = _interopRequireDefault(_Weekday);\n\nvar _Helpers = __webpack_require__(4);\n\nvar Helpers = _interopRequireWildcard(_Helpers);\n\nvar _DateUtils = __webpack_require__(1);\n\nvar DateUtils = _interopRequireWildcard(_DateUtils);\n\nvar _LocaleUtils = __webpack_require__(5);\n\nvar LocaleUtils = _interopRequireWildcard(_LocaleUtils);\n\nvar _ModifiersUtils = __webpack_require__(6);\n\nvar ModifiersUtils = _interopRequireWildcard(_ModifiersUtils);\n\nvar _classNames = __webpack_require__(3);\n\nvar _classNames2 = _interopRequireDefault(_classNames);\n\nvar _keys = __webpack_require__(2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DayPicker = exports.DayPicker = function (_Component) {\n  _inherits(DayPicker, _Component);\n\n  function DayPicker(props) {\n    _classCallCheck(this, DayPicker);\n\n    var _this = _possibleConstructorReturn(this, (DayPicker.__proto__ || Object.getPrototypeOf(DayPicker)).call(this, props));\n\n    _this.dayPicker = null;\n\n    _this.showNextMonth = function (callback) {\n      if (!_this.allowNextMonth()) {\n        return;\n      }\n      var deltaMonths = _this.props.pagedNavigation ? _this.props.numberOfMonths : 1;\n      var nextMonth = DateUtils.addMonths(_this.state.currentMonth, deltaMonths);\n      _this.showMonth(nextMonth, callback);\n    };\n\n    _this.showPreviousMonth = function (callback) {\n      if (!_this.allowPreviousMonth()) {\n        return;\n      }\n      var deltaMonths = _this.props.pagedNavigation ? _this.props.numberOfMonths : 1;\n      var previousMonth = DateUtils.addMonths(_this.state.currentMonth, -deltaMonths);\n      _this.showMonth(previousMonth, callback);\n    };\n\n    _this.handleKeyDown = function (e) {\n      e.persist();\n\n      switch (e.keyCode) {\n        case _keys.LEFT:\n          if (_this.props.dir === 'rtl') {\n            _this.showNextMonth();\n          } else {\n            _this.showPreviousMonth();\n          }\n          Helpers.cancelEvent(e);\n          break;\n        case _keys.RIGHT:\n          if (_this.props.dir === 'rtl') {\n            _this.showPreviousMonth();\n          } else {\n            _this.showNextMonth();\n          }\n          Helpers.cancelEvent(e);\n          break;\n        case _keys.UP:\n          _this.showPreviousYear();\n          Helpers.cancelEvent(e);\n          break;\n        case _keys.DOWN:\n          _this.showNextYear();\n          Helpers.cancelEvent(e);\n          break;\n        default:\n          break;\n      }\n\n      if (_this.props.onKeyDown) {\n        _this.props.onKeyDown(e);\n      }\n    };\n\n    _this.handleDayKeyDown = function (day, modifiers, e) {\n      e.persist();\n\n      switch (e.keyCode) {\n        case _keys.LEFT:\n          Helpers.cancelEvent(e);\n          if (_this.props.dir === 'rtl') {\n            _this.focusNextDay(e.target);\n          } else {\n            _this.focusPreviousDay(e.target);\n          }\n          break;\n        case _keys.RIGHT:\n          Helpers.cancelEvent(e);\n          if (_this.props.dir === 'rtl') {\n            _this.focusPreviousDay(e.target);\n          } else {\n            _this.focusNextDay(e.target);\n          }\n          break;\n        case _keys.UP:\n          Helpers.cancelEvent(e);\n          _this.focusPreviousWeek(e.target);\n          break;\n        case _keys.DOWN:\n          Helpers.cancelEvent(e);\n          _this.focusNextWeek(e.target);\n          break;\n        case _keys.ENTER:\n        case _keys.SPACE:\n          Helpers.cancelEvent(e);\n          if (_this.props.onDayClick) {\n            _this.handleDayClick(day, modifiers, e);\n          }\n          break;\n        default:\n          break;\n      }\n      if (_this.props.onDayKeyDown) {\n        _this.props.onDayKeyDown(day, modifiers, e);\n      }\n    };\n\n    _this.handleDayClick = function (day, modifiers, e) {\n      e.persist();\n\n      if (modifiers[_this.props.classNames.outside] && _this.props.enableOutsideDaysClick) {\n        _this.handleOutsideDayClick(day);\n      }\n      if (_this.props.onDayClick) {\n        _this.props.onDayClick(day, modifiers, e);\n      }\n    };\n\n    _this.handleTodayButtonClick = function (e) {\n      var today = new Date();\n      var month = new Date(today.getFullYear(), today.getMonth());\n      _this.showMonth(month);\n      e.target.blur();\n      if (_this.props.onTodayButtonClick) {\n        e.persist();\n        _this.props.onTodayButtonClick(new Date(today.getFullYear(), today.getMonth(), today.getDate()), ModifiersUtils.getModifiersForDay(today, _this.props.modifiers), e);\n      }\n    };\n\n    var currentMonth = _this.getCurrentMonthFromProps(props);\n    _this.state = { currentMonth: currentMonth };\n    return _this;\n  }\n\n  _createClass(DayPicker, [{\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      // Changing the `month` props means changing the current displayed month\n      if (prevProps.month !== this.props.month && !DateUtils.isSameMonth(prevProps.month, this.props.month)) {\n        var currentMonth = this.getCurrentMonthFromProps(this.props);\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState({ currentMonth: currentMonth });\n      }\n    }\n  }, {\n    key: 'getCurrentMonthFromProps',\n\n\n    /**\n     * Return the month to be shown in the calendar based on the component props.\n     *\n     * @param {Object} props\n     * @returns Date\n     * @memberof DayPicker\n     * @private\n     */\n    value: function getCurrentMonthFromProps(props) {\n      var initialMonth = Helpers.startOfMonth(props.month || props.initialMonth || new Date());\n      var currentMonth = initialMonth;\n\n      if (props.pagedNavigation && props.numberOfMonths > 1 && props.fromMonth) {\n        var fromMonth = Helpers.startOfMonth(props.fromMonth);\n        var diffInMonths = Helpers.getMonthsDiff(fromMonth, currentMonth);\n        currentMonth = DateUtils.addMonths(fromMonth, Math.floor(diffInMonths / props.numberOfMonths) * props.numberOfMonths);\n      } else if (props.toMonth && props.numberOfMonths > 1 && Helpers.getMonthsDiff(currentMonth, props.toMonth) <= 0) {\n        currentMonth = DateUtils.addMonths(Helpers.startOfMonth(props.toMonth), 1 - this.props.numberOfMonths);\n      }\n      return currentMonth;\n    }\n  }, {\n    key: 'getNextNavigableMonth',\n    value: function getNextNavigableMonth() {\n      return DateUtils.addMonths(this.state.currentMonth, this.props.numberOfMonths);\n    }\n  }, {\n    key: 'getPreviousNavigableMonth',\n    value: function getPreviousNavigableMonth() {\n      return DateUtils.addMonths(this.state.currentMonth, -1);\n    }\n  }, {\n    key: 'allowPreviousMonth',\n    value: function allowPreviousMonth() {\n      var previousMonth = DateUtils.addMonths(this.state.currentMonth, -1);\n      return this.allowMonth(previousMonth);\n    }\n  }, {\n    key: 'allowNextMonth',\n    value: function allowNextMonth() {\n      var nextMonth = DateUtils.addMonths(this.state.currentMonth, this.props.numberOfMonths);\n      return this.allowMonth(nextMonth);\n    }\n  }, {\n    key: 'allowMonth',\n    value: function allowMonth(d) {\n      var _props = this.props,\n          fromMonth = _props.fromMonth,\n          toMonth = _props.toMonth,\n          canChangeMonth = _props.canChangeMonth;\n\n      if (!canChangeMonth || fromMonth && Helpers.getMonthsDiff(fromMonth, d) < 0 || toMonth && Helpers.getMonthsDiff(toMonth, d) > 0) {\n        return false;\n      }\n      return true;\n    }\n  }, {\n    key: 'allowYearChange',\n    value: function allowYearChange() {\n      return this.props.canChangeMonth;\n    }\n  }, {\n    key: 'showMonth',\n    value: function showMonth(d, callback) {\n      var _this2 = this;\n\n      if (!this.allowMonth(d)) {\n        return;\n      }\n      this.setState({ currentMonth: Helpers.startOfMonth(d) }, function () {\n        if (callback) {\n          callback();\n        }\n        if (_this2.props.onMonthChange) {\n          _this2.props.onMonthChange(_this2.state.currentMonth);\n        }\n      });\n    }\n  }, {\n    key: 'showNextYear',\n    value: function showNextYear() {\n      if (!this.allowYearChange()) {\n        return;\n      }\n      var nextMonth = DateUtils.addMonths(this.state.currentMonth, 12);\n      this.showMonth(nextMonth);\n    }\n  }, {\n    key: 'showPreviousYear',\n    value: function showPreviousYear() {\n      if (!this.allowYearChange()) {\n        return;\n      }\n      var nextMonth = DateUtils.addMonths(this.state.currentMonth, -12);\n      this.showMonth(nextMonth);\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      this.wrapper.focus();\n    }\n  }, {\n    key: 'focusFirstDayOfMonth',\n    value: function focusFirstDayOfMonth() {\n      Helpers.getDayNodes(this.dayPicker, this.props.classNames)[0].focus();\n    }\n  }, {\n    key: 'focusLastDayOfMonth',\n    value: function focusLastDayOfMonth() {\n      var dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n      dayNodes[dayNodes.length - 1].focus();\n    }\n  }, {\n    key: 'focusPreviousDay',\n    value: function focusPreviousDay(dayNode) {\n      var _this3 = this;\n\n      var dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n      var dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n      if (dayNodeIndex === -1) return;\n      if (dayNodeIndex === 0) {\n        this.showPreviousMonth(function () {\n          return _this3.focusLastDayOfMonth();\n        });\n      } else {\n        dayNodes[dayNodeIndex - 1].focus();\n      }\n    }\n  }, {\n    key: 'focusNextDay',\n    value: function focusNextDay(dayNode) {\n      var _this4 = this;\n\n      var dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n      var dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n      if (dayNodeIndex === -1) return;\n      if (dayNodeIndex === dayNodes.length - 1) {\n        this.showNextMonth(function () {\n          return _this4.focusFirstDayOfMonth();\n        });\n      } else {\n        dayNodes[dayNodeIndex + 1].focus();\n      }\n    }\n  }, {\n    key: 'focusNextWeek',\n    value: function focusNextWeek(dayNode) {\n      var _this5 = this;\n\n      var dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n      var dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n      var isInLastWeekOfMonth = dayNodeIndex > dayNodes.length - 8;\n\n      if (isInLastWeekOfMonth) {\n        this.showNextMonth(function () {\n          var daysAfterIndex = dayNodes.length - dayNodeIndex;\n          var nextMonthDayNodeIndex = 7 - daysAfterIndex;\n          Helpers.getDayNodes(_this5.dayPicker, _this5.props.classNames)[nextMonthDayNodeIndex].focus();\n        });\n      } else {\n        dayNodes[dayNodeIndex + 7].focus();\n      }\n    }\n  }, {\n    key: 'focusPreviousWeek',\n    value: function focusPreviousWeek(dayNode) {\n      var _this6 = this;\n\n      var dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n      var dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n      var isInFirstWeekOfMonth = dayNodeIndex <= 6;\n\n      if (isInFirstWeekOfMonth) {\n        this.showPreviousMonth(function () {\n          var previousMonthDayNodes = Helpers.getDayNodes(_this6.dayPicker, _this6.props.classNames);\n          var startOfLastWeekOfMonth = previousMonthDayNodes.length - 7;\n          var previousMonthDayNodeIndex = startOfLastWeekOfMonth + dayNodeIndex;\n          previousMonthDayNodes[previousMonthDayNodeIndex].focus();\n        });\n      } else {\n        dayNodes[dayNodeIndex - 7].focus();\n      }\n    }\n\n    // Event handlers\n\n  }, {\n    key: 'handleOutsideDayClick',\n    value: function handleOutsideDayClick(day) {\n      var currentMonth = this.state.currentMonth;\n      var numberOfMonths = this.props.numberOfMonths;\n\n      var diffInMonths = Helpers.getMonthsDiff(currentMonth, day);\n      if (diffInMonths > 0 && diffInMonths >= numberOfMonths) {\n        this.showNextMonth();\n      } else if (diffInMonths < 0) {\n        this.showPreviousMonth();\n      }\n    }\n  }, {\n    key: 'renderNavbar',\n    value: function renderNavbar() {\n      var _props2 = this.props,\n          labels = _props2.labels,\n          locale = _props2.locale,\n          localeUtils = _props2.localeUtils,\n          canChangeMonth = _props2.canChangeMonth,\n          navbarElement = _props2.navbarElement,\n          attributes = _objectWithoutProperties(_props2, ['labels', 'locale', 'localeUtils', 'canChangeMonth', 'navbarElement']);\n\n      if (!canChangeMonth) return null;\n\n      var props = {\n        month: this.state.currentMonth,\n        classNames: this.props.classNames,\n        className: this.props.classNames.navBar,\n        nextMonth: this.getNextNavigableMonth(),\n        previousMonth: this.getPreviousNavigableMonth(),\n        showPreviousButton: this.allowPreviousMonth(),\n        showNextButton: this.allowNextMonth(),\n        onNextClick: this.showNextMonth,\n        onPreviousClick: this.showPreviousMonth,\n        dir: attributes.dir,\n        labels: labels,\n        locale: locale,\n        localeUtils: localeUtils\n      };\n      return _react2.default.isValidElement(navbarElement) ? _react2.default.cloneElement(navbarElement, props) : _react2.default.createElement(navbarElement, props);\n    }\n  }, {\n    key: 'renderMonths',\n    value: function renderMonths() {\n      var months = [];\n      var firstDayOfWeek = Helpers.getFirstDayOfWeekFromProps(this.props);\n      for (var i = 0; i < this.props.numberOfMonths; i += 1) {\n        var month = DateUtils.addMonths(this.state.currentMonth, i);\n        months.push(_react2.default.createElement(_Month2.default, _extends({\n          key: i\n        }, this.props, {\n          month: month,\n          firstDayOfWeek: firstDayOfWeek,\n          onDayKeyDown: this.handleDayKeyDown,\n          onDayClick: this.handleDayClick\n        })));\n      }\n\n      if (this.props.reverseMonths) {\n        months.reverse();\n      }\n      return months;\n    }\n  }, {\n    key: 'renderFooter',\n    value: function renderFooter() {\n      if (this.props.todayButton) {\n        return _react2.default.createElement(\n          'div',\n          { className: this.props.classNames.footer },\n          this.renderTodayButton()\n        );\n      }\n      return null;\n    }\n  }, {\n    key: 'renderTodayButton',\n    value: function renderTodayButton() {\n      return _react2.default.createElement(\n        'button',\n        {\n          type: 'button',\n          tabIndex: 0,\n          className: this.props.classNames.todayButton,\n          'aria-label': this.props.todayButton,\n          onClick: this.handleTodayButtonClick\n        },\n        this.props.todayButton\n      );\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this7 = this;\n\n      var className = this.props.classNames.container;\n\n      if (!this.props.onDayClick) {\n        className = className + ' ' + this.props.classNames.interactionDisabled;\n      }\n      if (this.props.className) {\n        className = className + ' ' + this.props.className;\n      }\n      return _react2.default.createElement(\n        'div',\n        _extends({}, this.props.containerProps, {\n          className: className,\n          ref: function ref(el) {\n            return _this7.dayPicker = el;\n          },\n          lang: this.props.locale\n        }),\n        _react2.default.createElement(\n          'div',\n          {\n            className: this.props.classNames.wrapper,\n            ref: function ref(el) {\n              return _this7.wrapper = el;\n            },\n            tabIndex: this.props.canChangeMonth && typeof this.props.tabIndex !== 'undefined' ? this.props.tabIndex : -1,\n            onKeyDown: this.handleKeyDown,\n            onFocus: this.props.onFocus,\n            onBlur: this.props.onBlur\n          },\n          this.renderNavbar(),\n          _react2.default.createElement(\n            'div',\n            { className: this.props.classNames.months },\n            this.renderMonths()\n          ),\n          this.renderFooter()\n        )\n      );\n    }\n  }]);\n\n  return DayPicker;\n}(_react.Component);\n\nDayPicker.defaultProps = {\n  classNames: _classNames2.default,\n  tabIndex: 0,\n  numberOfMonths: 1,\n  labels: {\n    previousMonth: 'Previous Month',\n    nextMonth: 'Next Month'\n  },\n  locale: 'en',\n  localeUtils: LocaleUtils,\n  showOutsideDays: false,\n  enableOutsideDaysClick: true,\n  fixedWeeks: false,\n  canChangeMonth: true,\n  reverseMonths: false,\n  pagedNavigation: false,\n  showWeekNumbers: false,\n  showWeekDays: true,\n  renderDay: function renderDay(day) {\n    return day.getDate();\n  },\n  renderWeek: function renderWeek(weekNumber) {\n    return weekNumber;\n  },\n  weekdayElement: _react2.default.createElement(_Weekday2.default, null),\n  navbarElement: _react2.default.createElement(_Navbar2.default, { classNames: _classNames2.default }),\n  captionElement: _react2.default.createElement(_Caption2.default, { classNames: _classNames2.default })\n};\nDayPicker.VERSION = '7.4.10';\n\n\nDayPicker.DateUtils = DateUtils;\nDayPicker.LocaleUtils = LocaleUtils;\nDayPicker.ModifiersUtils = ModifiersUtils;\n\nexports.DateUtils = DateUtils;\nexports.LocaleUtils = LocaleUtils;\nexports.ModifiersUtils = ModifiersUtils;\nexports.default = DayPicker;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n// Entry point for the umd package\nvar DayPicker = __webpack_require__(7).default;\nDayPicker.Input = __webpack_require__(15).default;\n\nexports.default = DayPicker;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _LocaleUtils = __webpack_require__(5);\n\nvar _LocaleUtils2 = _interopRequireDefault(_LocaleUtils);\n\nvar _keys = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Caption = function (_Component) {\n  _inherits(Caption, _Component);\n\n  function Caption(props) {\n    _classCallCheck(this, Caption);\n\n    var _this = _possibleConstructorReturn(this, (Caption.__proto__ || Object.getPrototypeOf(Caption)).call(this, props));\n\n    _this.handleKeyUp = _this.handleKeyUp.bind(_this);\n    return _this;\n  }\n\n  _createClass(Caption, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return nextProps.locale !== this.props.locale || nextProps.classNames !== this.props.classNames || nextProps.date.getMonth() !== this.props.date.getMonth() || nextProps.date.getFullYear() !== this.props.date.getFullYear();\n    }\n  }, {\n    key: 'handleKeyUp',\n    value: function handleKeyUp(e) {\n      if (e.keyCode === _keys.ENTER) {\n        this.props.onClick(e);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          classNames = _props.classNames,\n          date = _props.date,\n          months = _props.months,\n          locale = _props.locale,\n          localeUtils = _props.localeUtils,\n          onClick = _props.onClick;\n\n      return _react2.default.createElement(\n        'div',\n        { className: classNames.caption, role: 'heading', 'aria-live': 'polite' },\n        _react2.default.createElement(\n          'div',\n          { onClick: onClick, onKeyUp: this.handleKeyUp },\n          months ? months[date.getMonth()] + ' ' + date.getFullYear() : localeUtils.formatMonthTitle(date, locale)\n        )\n      );\n    }\n  }]);\n\n  return Caption;\n}(_react.Component);\n\nCaption.defaultProps = {\n  localeUtils: _LocaleUtils2.default\n};\nexports.default = Caption;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classNames = __webpack_require__(3);\n\nvar _classNames2 = _interopRequireDefault(_classNames);\n\nvar _keys = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Navbar = function (_Component) {\n  _inherits(Navbar, _Component);\n\n  function Navbar() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Navbar);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Navbar.__proto__ || Object.getPrototypeOf(Navbar)).call.apply(_ref, [this].concat(args))), _this), _this.handleNextClick = function () {\n      if (_this.props.onNextClick) {\n        _this.props.onNextClick();\n      }\n    }, _this.handlePreviousClick = function () {\n      if (_this.props.onPreviousClick) {\n        _this.props.onPreviousClick();\n      }\n    }, _this.handleNextKeyDown = function (e) {\n      if (e.keyCode !== _keys.ENTER && e.keyCode !== _keys.SPACE) {\n        return;\n      }\n      e.preventDefault();\n      _this.handleNextClick();\n    }, _this.handlePreviousKeyDown = function (e) {\n      if (e.keyCode !== _keys.ENTER && e.keyCode !== _keys.SPACE) {\n        return;\n      }\n      e.preventDefault();\n      _this.handlePreviousClick();\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Navbar, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return nextProps.labels !== this.props.labels || nextProps.dir !== this.props.dir || this.props.showPreviousButton !== nextProps.showPreviousButton || this.props.showNextButton !== nextProps.showNextButton;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          classNames = _props.classNames,\n          className = _props.className,\n          showPreviousButton = _props.showPreviousButton,\n          showNextButton = _props.showNextButton,\n          labels = _props.labels,\n          dir = _props.dir;\n\n\n      var previousClickHandler = void 0;\n      var nextClickHandler = void 0;\n      var previousKeyDownHandler = void 0;\n      var nextKeyDownHandler = void 0;\n      var shouldShowPrevious = void 0;\n      var shouldShowNext = void 0;\n\n      if (dir === 'rtl') {\n        previousClickHandler = this.handleNextClick;\n        nextClickHandler = this.handlePreviousClick;\n        previousKeyDownHandler = this.handleNextKeyDown;\n        nextKeyDownHandler = this.handlePreviousKeyDown;\n        shouldShowNext = showPreviousButton;\n        shouldShowPrevious = showNextButton;\n      } else {\n        previousClickHandler = this.handlePreviousClick;\n        nextClickHandler = this.handleNextClick;\n        previousKeyDownHandler = this.handlePreviousKeyDown;\n        nextKeyDownHandler = this.handleNextKeyDown;\n        shouldShowNext = showNextButton;\n        shouldShowPrevious = showPreviousButton;\n      }\n\n      var previousClassName = shouldShowPrevious ? classNames.navButtonPrev : classNames.navButtonPrev + ' ' + classNames.navButtonInteractionDisabled;\n\n      var nextClassName = shouldShowNext ? classNames.navButtonNext : classNames.navButtonNext + ' ' + classNames.navButtonInteractionDisabled;\n\n      var previousButton = _react2.default.createElement('span', {\n        tabIndex: '0',\n        role: 'button',\n        'aria-label': labels.previousMonth,\n        key: 'previous',\n        className: previousClassName,\n        onKeyDown: shouldShowPrevious ? previousKeyDownHandler : undefined,\n        onClick: shouldShowPrevious ? previousClickHandler : undefined\n      });\n\n      var nextButton = _react2.default.createElement('span', {\n        tabIndex: '0',\n        role: 'button',\n        'aria-label': labels.nextMonth,\n        key: 'right',\n        className: nextClassName,\n        onKeyDown: shouldShowNext ? nextKeyDownHandler : undefined,\n        onClick: shouldShowNext ? nextClickHandler : undefined\n      });\n\n      return _react2.default.createElement(\n        'div',\n        { className: className || classNames.navBar },\n        dir === 'rtl' ? [nextButton, previousButton] : [previousButton, nextButton]\n      );\n    }\n  }]);\n\n  return Navbar;\n}(_react.Component);\n\nNavbar.defaultProps = {\n  classNames: _classNames2.default,\n  dir: 'ltr',\n  labels: {\n    previousMonth: 'Previous Month',\n    nextMonth: 'Next Month'\n  },\n  showPreviousButton: true,\n  showNextButton: true\n};\nexports.default = Navbar;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Weekdays = __webpack_require__(12);\n\nvar _Weekdays2 = _interopRequireDefault(_Weekdays);\n\nvar _Day = __webpack_require__(13);\n\nvar _Day2 = _interopRequireDefault(_Day);\n\nvar _keys = __webpack_require__(2);\n\nvar _ModifiersUtils = __webpack_require__(6);\n\nvar ModifiersUtils = _interopRequireWildcard(_ModifiersUtils);\n\nvar _Helpers = __webpack_require__(4);\n\nvar Helpers = _interopRequireWildcard(_Helpers);\n\nvar _DateUtils = __webpack_require__(1);\n\nvar DateUtils = _interopRequireWildcard(_DateUtils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Month = function (_Component) {\n  _inherits(Month, _Component);\n\n  function Month() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Month);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Month.__proto__ || Object.getPrototypeOf(Month)).call.apply(_ref, [this].concat(args))), _this), _this.renderDay = function (day) {\n      var monthNumber = _this.props.month.getMonth();\n      var propModifiers = Helpers.getModifiersFromProps(_this.props);\n      var dayModifiers = ModifiersUtils.getModifiersForDay(day, propModifiers);\n      if (DateUtils.isSameDay(day, new Date()) && !Object.prototype.hasOwnProperty.call(propModifiers, _this.props.classNames.today)) {\n        dayModifiers.push(_this.props.classNames.today);\n      }\n      if (day.getMonth() !== monthNumber) {\n        dayModifiers.push(_this.props.classNames.outside);\n      }\n\n      var isOutside = day.getMonth() !== monthNumber;\n      var tabIndex = -1;\n      // Focus on the first day of the month\n      if (_this.props.onDayClick && !isOutside && day.getDate() === 1) {\n        tabIndex = _this.props.tabIndex; // eslint-disable-line prefer-destructuring\n      }\n      var key = '' + day.getFullYear() + day.getMonth() + day.getDate();\n      var modifiers = {};\n      dayModifiers.forEach(function (modifier) {\n        modifiers[modifier] = true;\n      });\n\n      return _react2.default.createElement(\n        _Day2.default,\n        {\n          key: '' + (isOutside ? 'outside-' : '') + key,\n          classNames: _this.props.classNames,\n          day: day,\n          modifiers: modifiers,\n          modifiersStyles: _this.props.modifiersStyles,\n          empty: isOutside && !_this.props.showOutsideDays && !_this.props.fixedWeeks,\n          tabIndex: tabIndex,\n          ariaLabel: _this.props.localeUtils.formatDay(day, _this.props.locale),\n          ariaDisabled: isOutside || dayModifiers.indexOf(_this.props.classNames.disabled) > -1,\n          ariaSelected: dayModifiers.indexOf(_this.props.classNames.selected) > -1,\n          onClick: _this.props.onDayClick,\n          onFocus: _this.props.onDayFocus,\n          onKeyDown: _this.props.onDayKeyDown,\n          onMouseEnter: _this.props.onDayMouseEnter,\n          onMouseLeave: _this.props.onDayMouseLeave,\n          onMouseDown: _this.props.onDayMouseDown,\n          onMouseUp: _this.props.onDayMouseUp,\n          onTouchEnd: _this.props.onDayTouchEnd,\n          onTouchStart: _this.props.onDayTouchStart\n        },\n        _this.props.renderDay(day, modifiers)\n      );\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Month, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          classNames = _props.classNames,\n          month = _props.month,\n          months = _props.months,\n          fixedWeeks = _props.fixedWeeks,\n          captionElement = _props.captionElement,\n          weekdayElement = _props.weekdayElement,\n          locale = _props.locale,\n          localeUtils = _props.localeUtils,\n          weekdaysLong = _props.weekdaysLong,\n          weekdaysShort = _props.weekdaysShort,\n          firstDayOfWeek = _props.firstDayOfWeek,\n          onCaptionClick = _props.onCaptionClick,\n          showWeekNumbers = _props.showWeekNumbers,\n          showWeekDays = _props.showWeekDays,\n          onWeekClick = _props.onWeekClick;\n\n\n      var captionProps = {\n        date: month,\n        classNames: classNames,\n        months: months,\n        localeUtils: localeUtils,\n        locale: locale,\n        onClick: onCaptionClick ? function (e) {\n          return onCaptionClick(month, e);\n        } : undefined\n      };\n      var caption = _react2.default.isValidElement(captionElement) ? _react2.default.cloneElement(captionElement, captionProps) : _react2.default.createElement(captionElement, captionProps);\n\n      var weeks = Helpers.getWeekArray(month, firstDayOfWeek, fixedWeeks);\n      return _react2.default.createElement(\n        'div',\n        { className: classNames.month, role: 'grid' },\n        caption,\n        showWeekDays && _react2.default.createElement(_Weekdays2.default, {\n          classNames: classNames,\n          weekdaysShort: weekdaysShort,\n          weekdaysLong: weekdaysLong,\n          firstDayOfWeek: firstDayOfWeek,\n          showWeekNumbers: showWeekNumbers,\n          locale: locale,\n          localeUtils: localeUtils,\n          weekdayElement: weekdayElement\n        }),\n        _react2.default.createElement(\n          'div',\n          { className: classNames.body, role: 'rowgroup' },\n          weeks.map(function (week) {\n            var weekNumber = void 0;\n            if (showWeekNumbers) {\n              weekNumber = DateUtils.getWeekNumber(week[6]);\n            }\n            return _react2.default.createElement(\n              'div',\n              {\n                key: week[0].getTime(),\n                className: classNames.week,\n                role: 'row'\n              },\n              showWeekNumbers && _react2.default.createElement(\n                'div',\n                {\n                  className: classNames.weekNumber,\n                  tabIndex: onWeekClick ? 0 : -1,\n                  role: 'gridcell',\n                  onClick: onWeekClick ? function (e) {\n                    return onWeekClick(weekNumber, week, e);\n                  } : undefined,\n                  onKeyUp: onWeekClick ? function (e) {\n                    return e.keyCode === _keys.ENTER && onWeekClick(weekNumber, week, e);\n                  } : undefined\n                },\n                _this2.props.renderWeek(weekNumber, week, month)\n              ),\n              week.map(_this2.renderDay)\n            );\n          })\n        )\n      );\n    }\n  }]);\n\n  return Month;\n}(_react.Component);\n\nexports.default = Month;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Weekdays = function (_Component) {\n  _inherits(Weekdays, _Component);\n\n  function Weekdays() {\n    _classCallCheck(this, Weekdays);\n\n    return _possibleConstructorReturn(this, (Weekdays.__proto__ || Object.getPrototypeOf(Weekdays)).apply(this, arguments));\n  }\n\n  _createClass(Weekdays, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return this.props !== nextProps;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          classNames = _props.classNames,\n          firstDayOfWeek = _props.firstDayOfWeek,\n          showWeekNumbers = _props.showWeekNumbers,\n          weekdaysLong = _props.weekdaysLong,\n          weekdaysShort = _props.weekdaysShort,\n          locale = _props.locale,\n          localeUtils = _props.localeUtils,\n          weekdayElement = _props.weekdayElement;\n\n      var days = [];\n      for (var i = 0; i < 7; i += 1) {\n        var weekday = (i + firstDayOfWeek) % 7;\n        var elementProps = {\n          key: i,\n          className: classNames.weekday,\n          weekday: weekday,\n          weekdaysLong: weekdaysLong,\n          weekdaysShort: weekdaysShort,\n          localeUtils: localeUtils,\n          locale: locale\n        };\n        var element = _react2.default.isValidElement(weekdayElement) ? _react2.default.cloneElement(weekdayElement, elementProps) : _react2.default.createElement(weekdayElement, elementProps);\n        days.push(element);\n      }\n\n      return _react2.default.createElement(\n        'div',\n        { className: classNames.weekdays, role: 'rowgroup' },\n        _react2.default.createElement(\n          'div',\n          { className: classNames.weekdaysRow, role: 'row' },\n          showWeekNumbers && _react2.default.createElement('div', { className: classNames.weekday }),\n          days\n        )\n      );\n    }\n  }]);\n\n  return Weekdays;\n}(_react.Component);\n\nexports.default = Weekdays;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _DateUtils = __webpack_require__(1);\n\nvar _Helpers = __webpack_require__(4);\n\nvar _classNames = __webpack_require__(3);\n\nvar _classNames2 = _interopRequireDefault(_classNames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable jsx-a11y/no-static-element-interactions, react/forbid-prop-types */\n\nfunction handleEvent(handler, day, modifiers) {\n  if (!handler) {\n    return undefined;\n  }\n  return function (e) {\n    e.persist();\n    handler(day, modifiers, e);\n  };\n}\n\nvar Day = function (_Component) {\n  _inherits(Day, _Component);\n\n  function Day() {\n    _classCallCheck(this, Day);\n\n    return _possibleConstructorReturn(this, (Day.__proto__ || Object.getPrototypeOf(Day)).apply(this, arguments));\n  }\n\n  _createClass(Day, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var propNames = Object.keys(this.props);\n      var nextPropNames = Object.keys(nextProps);\n      if (propNames.length !== nextPropNames.length) {\n        return true;\n      }\n      return propNames.some(function (name) {\n        if (name === 'modifiers' || name === 'modifiersStyles' || name === 'classNames') {\n          var prop = _this2.props[name];\n          var nextProp = nextProps[name];\n          var modifiers = Object.keys(prop);\n          var nextModifiers = Object.keys(nextProp);\n          if (modifiers.length !== nextModifiers.length) {\n            return true;\n          }\n          return modifiers.some(function (mod) {\n            return !(0, _Helpers.hasOwnProp)(nextProp, mod) || prop[mod] !== nextProp[mod];\n          });\n        }\n        if (name === 'day') {\n          return !(0, _DateUtils.isSameDay)(_this2.props[name], nextProps[name]);\n        }\n        return !(0, _Helpers.hasOwnProp)(nextProps, name) || _this2.props[name] !== nextProps[name];\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          classNames = _props.classNames,\n          modifiersStyles = _props.modifiersStyles,\n          day = _props.day,\n          tabIndex = _props.tabIndex,\n          empty = _props.empty,\n          modifiers = _props.modifiers,\n          onMouseEnter = _props.onMouseEnter,\n          onMouseLeave = _props.onMouseLeave,\n          onMouseUp = _props.onMouseUp,\n          onMouseDown = _props.onMouseDown,\n          onClick = _props.onClick,\n          onKeyDown = _props.onKeyDown,\n          onTouchStart = _props.onTouchStart,\n          onTouchEnd = _props.onTouchEnd,\n          onFocus = _props.onFocus,\n          ariaLabel = _props.ariaLabel,\n          ariaDisabled = _props.ariaDisabled,\n          ariaSelected = _props.ariaSelected,\n          children = _props.children;\n\n\n      var className = classNames.day;\n      if (classNames !== _classNames2.default) {\n        // When using CSS modules prefix the modifier as required by the BEM syntax\n        className += ' ' + Object.keys(modifiers).join(' ');\n      } else {\n        className += Object.keys(modifiers).map(function (modifier) {\n          return ' ' + className + '--' + modifier;\n        }).join('');\n      }\n\n      var style = void 0;\n      if (modifiersStyles) {\n        Object.keys(modifiers).filter(function (modifier) {\n          return !!modifiersStyles[modifier];\n        }).forEach(function (modifier) {\n          style = _extends({}, style, modifiersStyles[modifier]);\n        });\n      }\n\n      if (empty) {\n        return _react2.default.createElement('div', { 'aria-disabled': true, className: className, style: style });\n      }\n      return _react2.default.createElement(\n        'div',\n        {\n          className: className,\n          tabIndex: tabIndex,\n          style: style,\n          role: 'gridcell',\n          'aria-label': ariaLabel,\n          'aria-disabled': ariaDisabled,\n          'aria-selected': ariaSelected,\n          onClick: handleEvent(onClick, day, modifiers),\n          onKeyDown: handleEvent(onKeyDown, day, modifiers),\n          onMouseEnter: handleEvent(onMouseEnter, day, modifiers),\n          onMouseLeave: handleEvent(onMouseLeave, day, modifiers),\n          onMouseUp: handleEvent(onMouseUp, day, modifiers),\n          onMouseDown: handleEvent(onMouseDown, day, modifiers),\n          onTouchEnd: handleEvent(onTouchEnd, day, modifiers),\n          onTouchStart: handleEvent(onTouchStart, day, modifiers),\n          onFocus: handleEvent(onFocus, day, modifiers)\n        },\n        children\n      );\n    }\n  }]);\n\n  return Day;\n}(_react.Component);\n\nDay.defaultProps = {\n  tabIndex: -1\n};\nDay.defaultProps = {\n  modifiers: {},\n  modifiersStyles: {},\n  empty: false\n};\nexports.default = Day;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Weekday = function (_Component) {\n  _inherits(Weekday, _Component);\n\n  function Weekday() {\n    _classCallCheck(this, Weekday);\n\n    return _possibleConstructorReturn(this, (Weekday.__proto__ || Object.getPrototypeOf(Weekday)).apply(this, arguments));\n  }\n\n  _createClass(Weekday, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return this.props !== nextProps;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          weekday = _props.weekday,\n          className = _props.className,\n          weekdaysLong = _props.weekdaysLong,\n          weekdaysShort = _props.weekdaysShort,\n          localeUtils = _props.localeUtils,\n          locale = _props.locale;\n\n      var title = void 0;\n      if (weekdaysLong) {\n        title = weekdaysLong[weekday];\n      } else {\n        title = localeUtils.formatWeekdayLong(weekday, locale);\n      }\n      var content = void 0;\n      if (weekdaysShort) {\n        content = weekdaysShort[weekday];\n      } else {\n        content = localeUtils.formatWeekdayShort(weekday, locale);\n      }\n\n      return _react2.default.createElement(\n        'div',\n        { className: className, role: 'columnheader' },\n        _react2.default.createElement(\n          'abbr',\n          { title: title },\n          content\n        )\n      );\n    }\n  }]);\n\n  return Weekday;\n}(_react.Component);\n\nexports.default = Weekday;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.HIDE_TIMEOUT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.OverlayComponent = OverlayComponent;\nexports.defaultFormat = defaultFormat;\nexports.defaultParse = defaultParse;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _DayPicker = __webpack_require__(7);\n\nvar _DayPicker2 = _interopRequireDefault(_DayPicker);\n\nvar _DateUtils = __webpack_require__(1);\n\nvar _ModifiersUtils = __webpack_require__(6);\n\nvar _keys = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n// When clicking on a day cell, overlay will be hidden after this timeout\nvar HIDE_TIMEOUT = exports.HIDE_TIMEOUT = 100;\n\n/**\n * The default component used as Overlay.\n *\n * @param {Object} props\n */\nfunction OverlayComponent(_ref) {\n  var input = _ref.input,\n      selectedDay = _ref.selectedDay,\n      month = _ref.month,\n      children = _ref.children,\n      classNames = _ref.classNames,\n      props = _objectWithoutProperties(_ref, ['input', 'selectedDay', 'month', 'children', 'classNames']);\n\n  return _react2.default.createElement(\n    'div',\n    _extends({ className: classNames.overlayWrapper }, props),\n    _react2.default.createElement(\n      'div',\n      { className: classNames.overlay },\n      children\n    )\n  );\n}\n\n/**\n * The default function used to format a Date to String, passed to the `format`\n * prop.\n * @param {Date} d\n * @return {String}\n */\nfunction defaultFormat(d) {\n  if ((0, _DateUtils.isDate)(d)) {\n    var year = d.getFullYear();\n    var month = '' + (d.getMonth() + 1);\n    var day = '' + d.getDate();\n    return year + '-' + month + '-' + day;\n  }\n  return '';\n}\n\n/**\n * The default function used to parse a String as Date, passed to the `parse`\n * prop.\n * @param {String} str\n * @return {Date}\n */\nfunction defaultParse(str) {\n  if (typeof str !== 'string') {\n    return undefined;\n  }\n  var split = str.split('-');\n  if (split.length !== 3) {\n    return undefined;\n  }\n  var year = parseInt(split[0], 10);\n  var month = parseInt(split[1], 10) - 1;\n  var day = parseInt(split[2], 10);\n  if (isNaN(year) || String(year).length > 4 || isNaN(month) || isNaN(day) || day <= 0 || day > 31 || month < 0 || month >= 12) {\n    return undefined;\n  }\n\n  return new Date(year, month, day, 12, 0, 0, 0); // always set noon to avoid time zone issues\n}\n\nvar DayPickerInput = function (_React$Component) {\n  _inherits(DayPickerInput, _React$Component);\n\n  function DayPickerInput(props) {\n    _classCallCheck(this, DayPickerInput);\n\n    var _this = _possibleConstructorReturn(this, (DayPickerInput.__proto__ || Object.getPrototypeOf(DayPickerInput)).call(this, props));\n\n    _this.input = null;\n    _this.daypicker = null;\n    _this.clickTimeout = null;\n    _this.hideTimeout = null;\n    _this.inputBlurTimeout = null;\n    _this.inputFocusTimeout = null;\n\n\n    _this.state = _this.getInitialStateFromProps(props);\n    _this.state.showOverlay = props.showOverlay;\n\n    _this.hideAfterDayClick = _this.hideAfterDayClick.bind(_this);\n    _this.handleInputClick = _this.handleInputClick.bind(_this);\n    _this.handleInputFocus = _this.handleInputFocus.bind(_this);\n    _this.handleInputBlur = _this.handleInputBlur.bind(_this);\n    _this.handleInputChange = _this.handleInputChange.bind(_this);\n    _this.handleInputKeyDown = _this.handleInputKeyDown.bind(_this);\n    _this.handleInputKeyUp = _this.handleInputKeyUp.bind(_this);\n    _this.handleDayClick = _this.handleDayClick.bind(_this);\n    _this.handleMonthChange = _this.handleMonthChange.bind(_this);\n    _this.handleOverlayFocus = _this.handleOverlayFocus.bind(_this);\n    _this.handleOverlayBlur = _this.handleOverlayBlur.bind(_this);\n    return _this;\n  }\n\n  _createClass(DayPickerInput, [{\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      var newState = {};\n\n      // Current props\n      var _props = this.props,\n          value = _props.value,\n          formatDate = _props.formatDate,\n          format = _props.format,\n          dayPickerProps = _props.dayPickerProps;\n\n      // Update the input value if `value`, `dayPickerProps.locale` or `format`\n      // props have changed\n\n      if (value !== prevProps.value || dayPickerProps.locale !== prevProps.dayPickerProps.locale || format !== prevProps.format) {\n        if ((0, _DateUtils.isDate)(value)) {\n          newState.value = formatDate(value, format, dayPickerProps.locale);\n        } else {\n          newState.value = value;\n        }\n      }\n\n      // Update the month if the months from props changed\n      var prevMonth = prevProps.dayPickerProps.month;\n      if (dayPickerProps.month && dayPickerProps.month !== prevMonth && !(0, _DateUtils.isSameMonth)(dayPickerProps.month, prevMonth)) {\n        newState.month = dayPickerProps.month;\n      }\n\n      // Updated the selected days from props if they changed\n      if (prevProps.dayPickerProps.selectedDays !== dayPickerProps.selectedDays) {\n        newState.selectedDays = dayPickerProps.selectedDays;\n      }\n\n      if (Object.keys(newState).length > 0) {\n        // eslint-disable-next-line react/no-did-update-set-state\n        this.setState(newState);\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      clearTimeout(this.clickTimeout);\n      clearTimeout(this.hideTimeout);\n      clearTimeout(this.inputFocusTimeout);\n      clearTimeout(this.inputBlurTimeout);\n      clearTimeout(this.overlayBlurTimeout);\n    }\n  }, {\n    key: 'getInitialMonthFromProps',\n    value: function getInitialMonthFromProps(props) {\n      var dayPickerProps = props.dayPickerProps,\n          format = props.format;\n\n      var day = void 0;\n      if (props.value) {\n        if ((0, _DateUtils.isDate)(props.value)) {\n          day = props.value;\n        } else {\n          day = props.parseDate(props.value, format, dayPickerProps.locale);\n        }\n      }\n      return dayPickerProps.initialMonth || dayPickerProps.month || day || new Date();\n    }\n  }, {\n    key: 'getInitialStateFromProps',\n    value: function getInitialStateFromProps(props) {\n      var dayPickerProps = props.dayPickerProps,\n          formatDate = props.formatDate,\n          format = props.format,\n          typedValue = props.typedValue;\n      var value = props.value;\n\n      if (props.value && (0, _DateUtils.isDate)(props.value)) {\n        value = formatDate(props.value, format, dayPickerProps.locale);\n      }\n\n      return {\n        value: value,\n        typedValue: typedValue,\n        month: this.getInitialMonthFromProps(props),\n        selectedDays: dayPickerProps.selectedDays\n      };\n    }\n  }, {\n    key: 'getInput',\n    value: function getInput() {\n      return this.input;\n    }\n  }, {\n    key: 'getDayPicker',\n    value: function getDayPicker() {\n      return this.daypicker;\n    }\n\n    /**\n     * Update the component's state and fire the `onDayChange` event passing the\n     * day's modifiers to it.\n     *\n     * @param {Date} day - Will be used for changing the month\n     * @param {String} value - Input field value\n     * @private\n     */\n\n  }, {\n    key: 'updateState',\n    value: function updateState(day, value, callback) {\n      var _this2 = this;\n\n      var _props2 = this.props,\n          dayPickerProps = _props2.dayPickerProps,\n          onDayChange = _props2.onDayChange;\n\n      this.setState({ month: day, value: value, typedValue: '' }, function () {\n        if (callback) {\n          callback();\n        }\n        if (!onDayChange) {\n          return;\n        }\n        var modifiersObj = _extends({\n          disabled: dayPickerProps.disabledDays,\n          selected: dayPickerProps.selectedDays\n        }, dayPickerProps.modifiers);\n        var modifiers = (0, _ModifiersUtils.getModifiersForDay)(day, modifiersObj).reduce(function (obj, modifier) {\n          return _extends({}, obj, _defineProperty({}, modifier, true));\n        }, {});\n        onDayChange(day, modifiers, _this2);\n      });\n    }\n\n    /**\n     * Show the Day Picker overlay.\n     *\n     * @memberof DayPickerInput\n     */\n\n  }, {\n    key: 'showDayPicker',\n    value: function showDayPicker() {\n      var _this3 = this;\n\n      var _props3 = this.props,\n          parseDate = _props3.parseDate,\n          format = _props3.format,\n          dayPickerProps = _props3.dayPickerProps;\n      var _state = this.state,\n          value = _state.value,\n          showOverlay = _state.showOverlay;\n\n      if (showOverlay) {\n        return;\n      }\n      // Reset the current displayed month when showing the overlay\n      var month = value ? parseDate(value, format, dayPickerProps.locale) // Use the month in the input field\n      : this.getInitialMonthFromProps(this.props); // Restore the month from the props\n      this.setState(function (state) {\n        return {\n          showOverlay: true,\n          month: month || state.month\n        };\n      }, function () {\n        if (_this3.props.onDayPickerShow) _this3.props.onDayPickerShow();\n      });\n    }\n\n    /**\n     * Hide the Day Picker overlay\n     *\n     * @memberof DayPickerInput\n     */\n\n  }, {\n    key: 'hideDayPicker',\n    value: function hideDayPicker() {\n      var _this4 = this;\n\n      if (this.state.showOverlay === false) {\n        return;\n      }\n      this.setState({ showOverlay: false }, function () {\n        if (_this4.props.onDayPickerHide) _this4.props.onDayPickerHide();\n      });\n    }\n  }, {\n    key: 'hideAfterDayClick',\n    value: function hideAfterDayClick() {\n      var _this5 = this;\n\n      if (!this.props.hideOnDayClick) {\n        return;\n      }\n      this.hideTimeout = setTimeout(function () {\n        _this5.overlayHasFocus = false;\n        _this5.hideDayPicker();\n      }, HIDE_TIMEOUT);\n    }\n  }, {\n    key: 'handleInputClick',\n    value: function handleInputClick(e) {\n      this.showDayPicker();\n      if (this.props.inputProps.onClick) {\n        e.persist();\n        this.props.inputProps.onClick(e);\n      }\n    }\n  }, {\n    key: 'handleInputFocus',\n    value: function handleInputFocus(e) {\n      var _this6 = this;\n\n      this.showDayPicker();\n      // Set `overlayHasFocus` after a timeout so the overlay can be hidden when\n      // the input is blurred\n      this.inputFocusTimeout = setTimeout(function () {\n        _this6.overlayHasFocus = false;\n      }, 2);\n      if (this.props.inputProps.onFocus) {\n        e.persist();\n        this.props.inputProps.onFocus(e);\n      }\n    }\n\n    // When the input is blurred, the overlay should disappear. However the input\n    // is blurred also when the user interacts with the overlay (e.g. the overlay\n    // get the focus by clicking it). In these cases, the overlay should not be\n    // hidden. There are different approaches to avoid hiding the overlay when\n    // this happens, but the only cross-browser hack we’ve found is to set all\n    // these timeouts in code before changing `overlayHasFocus`.\n\n  }, {\n    key: 'handleInputBlur',\n    value: function handleInputBlur(e) {\n      var _this7 = this;\n\n      this.inputBlurTimeout = setTimeout(function () {\n        if (!_this7.overlayHasFocus) {\n          _this7.hideDayPicker();\n        }\n      }, 1);\n      if (this.props.inputProps.onBlur) {\n        e.persist();\n        this.props.inputProps.onBlur(e);\n      }\n    }\n  }, {\n    key: 'handleOverlayFocus',\n    value: function handleOverlayFocus(e) {\n      e.preventDefault();\n      this.overlayHasFocus = true;\n      if (!this.props.keepFocus || !this.input || typeof this.input.focus !== 'function') {\n        return;\n      }\n      this.input.focus();\n    }\n  }, {\n    key: 'handleOverlayBlur',\n    value: function handleOverlayBlur() {\n      var _this8 = this;\n\n      // We need to set a timeout otherwise IE11 will hide the overlay when\n      // focusing it\n      this.overlayBlurTimeout = setTimeout(function () {\n        _this8.overlayHasFocus = false;\n      }, 3);\n    }\n  }, {\n    key: 'handleInputChange',\n    value: function handleInputChange(e) {\n      var _props4 = this.props,\n          dayPickerProps = _props4.dayPickerProps,\n          format = _props4.format,\n          inputProps = _props4.inputProps,\n          onDayChange = _props4.onDayChange,\n          parseDate = _props4.parseDate;\n\n      if (inputProps.onChange) {\n        e.persist();\n        inputProps.onChange(e);\n      }\n      var value = e.target.value;\n\n      if (value.trim() === '') {\n        this.setState({ value: value, typedValue: '' });\n        if (onDayChange) onDayChange(undefined, {}, this);\n        return;\n      }\n      var day = parseDate(value, format, dayPickerProps.locale);\n      if (!day) {\n        // Day is invalid: we save the value in the typedValue state\n        this.setState({ value: value, typedValue: value });\n        if (onDayChange) onDayChange(undefined, {}, this);\n        return;\n      }\n      this.updateState(day, value);\n    }\n  }, {\n    key: 'handleInputKeyDown',\n    value: function handleInputKeyDown(e) {\n      if (e.keyCode === _keys.TAB) {\n        this.hideDayPicker();\n      } else {\n        this.showDayPicker();\n      }\n      if (this.props.inputProps.onKeyDown) {\n        e.persist();\n        this.props.inputProps.onKeyDown(e);\n      }\n    }\n  }, {\n    key: 'handleInputKeyUp',\n    value: function handleInputKeyUp(e) {\n      if (e.keyCode === _keys.ESC) {\n        this.hideDayPicker();\n      } else {\n        this.showDayPicker();\n      }\n      if (this.props.inputProps.onKeyUp) {\n        e.persist();\n        this.props.inputProps.onKeyUp(e);\n      }\n    }\n  }, {\n    key: 'handleMonthChange',\n    value: function handleMonthChange(month) {\n      var _this9 = this;\n\n      this.setState({ month: month }, function () {\n        if (_this9.props.dayPickerProps && _this9.props.dayPickerProps.onMonthChange) {\n          _this9.props.dayPickerProps.onMonthChange(month);\n        }\n      });\n    }\n  }, {\n    key: 'handleDayClick',\n    value: function handleDayClick(day, modifiers, e) {\n      var _this10 = this;\n\n      var _props5 = this.props,\n          clickUnselectsDay = _props5.clickUnselectsDay,\n          dayPickerProps = _props5.dayPickerProps,\n          onDayChange = _props5.onDayChange,\n          formatDate = _props5.formatDate,\n          format = _props5.format;\n\n      if (dayPickerProps.onDayClick) {\n        dayPickerProps.onDayClick(day, modifiers, e);\n      }\n\n      // Do nothing if the day is disabled\n      if (modifiers.disabled || dayPickerProps && dayPickerProps.classNames && modifiers[dayPickerProps.classNames.disabled]) {\n        return;\n      }\n\n      // If the clicked day is already selected, remove the clicked day\n      // from the selected days and empty the field value\n      if (modifiers.selected && clickUnselectsDay) {\n        var selectedDays = this.state.selectedDays;\n\n        if (Array.isArray(selectedDays)) {\n          selectedDays = selectedDays.slice(0);\n          var selectedDayIdx = selectedDays.indexOf(day);\n          selectedDays.splice(selectedDayIdx, 1);\n        } else if (selectedDays) {\n          selectedDays = null;\n        }\n\n        this.setState({ value: '', typedValue: '', selectedDays: selectedDays }, this.hideAfterDayClick);\n\n        if (onDayChange) {\n          onDayChange(undefined, modifiers, this);\n        }\n        return;\n      }\n\n      var value = formatDate(day, format, dayPickerProps.locale);\n      this.setState({ value: value, typedValue: '', month: day }, function () {\n        if (onDayChange) {\n          onDayChange(day, modifiers, _this10);\n        }\n        _this10.hideAfterDayClick();\n      });\n    }\n  }, {\n    key: 'renderOverlay',\n    value: function renderOverlay() {\n      var _this11 = this;\n\n      var _props6 = this.props,\n          classNames = _props6.classNames,\n          dayPickerProps = _props6.dayPickerProps,\n          parseDate = _props6.parseDate,\n          formatDate = _props6.formatDate,\n          format = _props6.format;\n      var _state2 = this.state,\n          selectedDays = _state2.selectedDays,\n          value = _state2.value;\n\n      var selectedDay = void 0;\n      if (!selectedDays && value) {\n        var day = parseDate(value, format, dayPickerProps.locale);\n        if (day) {\n          selectedDay = day;\n        }\n      } else if (selectedDays) {\n        selectedDay = selectedDays;\n      }\n      var onTodayButtonClick = void 0;\n      if (dayPickerProps.todayButton) {\n        // Set the current day when clicking the today button\n        onTodayButtonClick = function onTodayButtonClick() {\n          return _this11.updateState(new Date(), formatDate(new Date(), format, dayPickerProps.locale), _this11.hideAfterDayClick);\n        };\n      }\n      var Overlay = this.props.overlayComponent;\n      return _react2.default.createElement(\n        Overlay,\n        {\n          classNames: classNames,\n          month: this.state.month,\n          selectedDay: selectedDay,\n          input: this.input,\n          tabIndex: 0 // tabIndex is necessary to catch focus/blur events on Safari\n          , onFocus: this.handleOverlayFocus,\n          onBlur: this.handleOverlayBlur\n        },\n        _react2.default.createElement(_DayPicker2.default, _extends({\n          ref: function ref(el) {\n            return _this11.daypicker = el;\n          },\n          onTodayButtonClick: onTodayButtonClick\n        }, dayPickerProps, {\n          month: this.state.month,\n          selectedDays: selectedDay,\n          onDayClick: this.handleDayClick,\n          onMonthChange: this.handleMonthChange\n        }))\n      );\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this12 = this;\n\n      var Input = this.props.component;\n      var inputProps = this.props.inputProps;\n\n      return _react2.default.createElement(\n        'div',\n        { className: this.props.classNames.container, style: this.props.style },\n        _react2.default.createElement(Input, _extends({\n          ref: function ref(el) {\n            return _this12.input = el;\n          },\n          placeholder: this.props.placeholder\n        }, inputProps, {\n          value: this.state.value || this.state.typedValue,\n          onChange: this.handleInputChange,\n          onFocus: this.handleInputFocus,\n          onBlur: this.handleInputBlur,\n          onKeyDown: this.handleInputKeyDown,\n          onKeyUp: this.handleInputKeyUp,\n          onClick: !inputProps.disabled ? this.handleInputClick : undefined\n        })),\n        this.state.showOverlay && this.renderOverlay()\n      );\n    }\n  }]);\n\n  return DayPickerInput;\n}(_react2.default.Component);\n\nDayPickerInput.defaultProps = {\n  dayPickerProps: {},\n  value: '',\n  typedValue: '',\n  placeholder: 'YYYY-M-D',\n  format: 'L',\n  formatDate: defaultFormat,\n  parseDate: defaultParse,\n  showOverlay: false,\n  hideOnDayClick: true,\n  clickUnselectsDay: false,\n  keepFocus: true,\n  component: 'input',\n  inputProps: {},\n  overlayComponent: OverlayComponent,\n  classNames: {\n    container: 'DayPickerInput',\n    overlayWrapper: 'DayPickerInput-OverlayWrapper',\n    overlay: 'DayPickerInput-Overlay'\n  }\n};\nexports.default = DayPickerInput;\n\n/***/ })\n/******/ ])[\"default\"];\n});\n\n\n// WEBPACK FOOTER //\n// react-day-picker.min.js","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\n// module id = 0\n// module chunks = 0","/**\n * Clone a date object.\n *\n * @export\n * @param  {Date} d The date to clone\n * @return {Date} The cloned date\n */\nexport function clone(d) {\n  return new Date(d.getTime());\n}\n\n/**\n * Return `true` if the passed value is a valid JavaScript Date object.\n *\n * @export\n * @param {any} value\n * @returns {Boolean}\n */\nexport function isDate(value) {\n  return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * Return `d` as a new date with `n` months added.\n *\n * @export\n * @param {Date} d\n * @param {number} n\n */\nexport function addMonths(d, n) {\n  const newDate = clone(d);\n  newDate.setMonth(d.getMonth() + n);\n  return newDate;\n}\n\n/**\n * Return `true` if two dates are the same day, ignoring the time.\n *\n * @export\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nexport function isSameDay(d1, d2) {\n  if (!d1 || !d2) {\n    return false;\n  }\n  return (\n    d1.getDate() === d2.getDate() &&\n    d1.getMonth() === d2.getMonth() &&\n    d1.getFullYear() === d2.getFullYear()\n  );\n}\n\n/**\n * Return `true` if two dates fall in the same month.\n *\n * @export\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nexport function isSameMonth(d1, d2) {\n  if (!d1 || !d2) {\n    return false;\n  }\n  return (\n    d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear()\n  );\n}\n\n/**\n * Returns `true` if the first day is before the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nexport function isDayBefore(d1, d2) {\n  const day1 = clone(d1).setHours(0, 0, 0, 0);\n  const day2 = clone(d2).setHours(0, 0, 0, 0);\n  return day1 < day2;\n}\n\n/**\n * Returns `true` if the first day is after the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nexport function isDayAfter(d1, d2) {\n  const day1 = clone(d1).setHours(0, 0, 0, 0);\n  const day2 = clone(d2).setHours(0, 0, 0, 0);\n  return day1 > day2;\n}\n\n/**\n * Return `true` if a day is in the past, e.g. yesterday or any day\n * before yesterday.\n *\n * @export\n * @param  {Date}  d\n * @return {Boolean}\n */\nexport function isPastDay(d) {\n  const today = new Date();\n  today.setHours(0, 0, 0, 0);\n  return isDayBefore(d, today);\n}\n\n/**\n * Return `true` if a day is in the future, e.g. tomorrow or any day\n * after tomorrow.\n *\n * @export\n * @param  {Date}  d\n * @return {Boolean}\n */\nexport function isFutureDay(d) {\n  const tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);\n  tomorrow.setHours(0, 0, 0, 0);\n  return d >= tomorrow;\n}\n\n/**\n * Return `true` if day `d` is between days `d1` and `d2`,\n * without including them.\n *\n * @export\n * @param  {Date}  d\n * @param  {Date}  d1\n * @param  {Date}  d2\n * @return {Boolean}\n */\nexport function isDayBetween(d, d1, d2) {\n  const date = clone(d);\n  date.setHours(0, 0, 0, 0);\n  return (\n    (isDayAfter(date, d1) && isDayBefore(date, d2)) ||\n    (isDayAfter(date, d2) && isDayBefore(date, d1))\n  );\n}\n\n/**\n * Add a day to a range and return a new range. A range is an object with\n * `from` and `to` days.\n *\n * @export\n * @param {Date} day\n * @param {Object} range\n * @return {Object} Returns a new range object\n */\nexport function addDayToRange(day, range = { from: null, to: null }) {\n  let { from, to } = range;\n  if (!from) {\n    from = day;\n  } else if (from && to && isSameDay(from, to) && isSameDay(day, from)) {\n    from = null;\n    to = null;\n  } else if (to && isDayBefore(day, from)) {\n    from = day;\n  } else if (to && isSameDay(day, to)) {\n    from = day;\n    to = day;\n  } else {\n    to = day;\n    if (isDayBefore(to, from)) {\n      to = from;\n      from = day;\n    }\n  }\n\n  return { from, to };\n}\n\n/**\n * Return `true` if a day is included in a range of days.\n *\n * @export\n * @param  {Date}  day\n * @param  {Object}  range\n * @return {Boolean}\n */\nexport function isDayInRange(day, range) {\n  const { from, to } = range;\n  return (\n    (from && isSameDay(day, from)) ||\n    (to && isSameDay(day, to)) ||\n    (from && to && isDayBetween(day, from, to))\n  );\n}\n\n/**\n * Return the year's week number (as per ISO, i.e. with the week starting from monday)\n * for the given day.\n *\n * @export\n * @param {Date} day\n * @returns {Number}\n */\nexport function getWeekNumber(day) {\n  const date = clone(day);\n  date.setHours(0, 0, 0);\n  date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n  return Math.ceil(\n    ((date - new Date(date.getFullYear(), 0, 1)) / 8.64e7 + 1) / 7\n  );\n}\n\nexport default {\n  addDayToRange,\n  addMonths,\n  clone,\n  getWeekNumber,\n  isDate,\n  isDayAfter,\n  isDayBefore,\n  isDayBetween,\n  isDayInRange,\n  isFutureDay,\n  isPastDay,\n  isSameDay,\n  isSameMonth,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/DateUtils.js","export const LEFT = 37;\nexport const UP = 38;\nexport const RIGHT = 39;\nexport const DOWN = 40;\nexport const ENTER = 13;\nexport const SPACE = 32;\nexport const ESC = 27;\nexport const TAB = 9;\n\n\n\n// WEBPACK FOOTER //\n// ./src/keys.js","// Proxy object to map classnames when css modules are not used\n\nexport default {\n  container: 'DayPicker',\n  wrapper: 'DayPicker-wrapper',\n  interactionDisabled: 'DayPicker--interactionDisabled',\n  months: 'DayPicker-Months',\n  month: 'DayPicker-Month',\n\n  navBar: 'DayPicker-NavBar',\n  navButtonPrev: 'DayPicker-NavButton DayPicker-NavButton--prev',\n  navButtonNext: 'DayPicker-NavButton DayPicker-NavButton--next',\n  navButtonInteractionDisabled: 'DayPicker-NavButton--interactionDisabled',\n\n  caption: 'DayPicker-Caption',\n  weekdays: 'DayPicker-Weekdays',\n  weekdaysRow: 'DayPicker-WeekdaysRow',\n  weekday: 'DayPicker-Weekday',\n  body: 'DayPicker-Body',\n  week: 'DayPicker-Week',\n  weekNumber: 'DayPicker-WeekNumber',\n  day: 'DayPicker-Day',\n  footer: 'DayPicker-Footer',\n  todayButton: 'DayPicker-TodayButton',\n\n  // default modifiers\n  today: 'today',\n  selected: 'selected',\n  disabled: 'disabled',\n  outside: 'outside',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/classNames.js","import { clone } from './DateUtils';\nimport { getFirstDayOfWeek } from './LocaleUtils';\nimport defaultClassNames from './classNames';\n\nexport function cancelEvent(e) {\n  e.preventDefault();\n  e.stopPropagation();\n}\n\nexport function getFirstDayOfMonth(d) {\n  return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nexport function getDaysInMonth(d) {\n  const resultDate = getFirstDayOfMonth(d);\n\n  resultDate.setMonth(resultDate.getMonth() + 1);\n  resultDate.setDate(resultDate.getDate() - 1);\n\n  return resultDate.getDate();\n}\n\nexport function getModifiersFromProps(props) {\n  const modifiers = { ...props.modifiers };\n  if (props.selectedDays) {\n    modifiers[props.classNames.selected] = props.selectedDays;\n  }\n  if (props.disabledDays) {\n    modifiers[props.classNames.disabled] = props.disabledDays;\n  }\n  return modifiers;\n}\n\nexport function getFirstDayOfWeekFromProps(props) {\n  const { firstDayOfWeek, locale = 'en', localeUtils = {} } = props;\n  if (!isNaN(firstDayOfWeek)) {\n    return firstDayOfWeek;\n  }\n  if (localeUtils.getFirstDayOfWeek) {\n    return localeUtils.getFirstDayOfWeek(locale);\n  }\n  return 0;\n}\n\nexport function isRangeOfDates(value) {\n  return !!(value && value.from && value.to);\n}\n\nexport function getMonthsDiff(d1, d2) {\n  return (\n    d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear())\n  );\n}\n\nexport function getWeekArray(\n  d,\n  firstDayOfWeek = getFirstDayOfWeek(),\n  fixedWeeks\n) {\n  const daysInMonth = getDaysInMonth(d);\n  const dayArray = [];\n\n  let week = [];\n  const weekArray = [];\n\n  for (let i = 1; i <= daysInMonth; i += 1) {\n    dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n  }\n\n  dayArray.forEach(day => {\n    if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n      weekArray.push(week);\n      week = [];\n    }\n    week.push(day);\n    if (dayArray.indexOf(day) === dayArray.length - 1) {\n      weekArray.push(week);\n    }\n  });\n\n  // unshift days to start the first week\n  const firstWeek = weekArray[0];\n  for (let i = 7 - firstWeek.length; i > 0; i -= 1) {\n    const outsideDate = clone(firstWeek[0]);\n    outsideDate.setDate(firstWeek[0].getDate() - 1);\n    firstWeek.unshift(outsideDate);\n  }\n\n  // push days until the end of the last week\n  const lastWeek = weekArray[weekArray.length - 1];\n  for (let i = lastWeek.length; i < 7; i += 1) {\n    const outsideDate = clone(lastWeek[lastWeek.length - 1]);\n    outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n    lastWeek.push(outsideDate);\n  }\n\n  // add extra weeks to reach 6 weeks\n  if (fixedWeeks && weekArray.length < 6) {\n    let lastExtraWeek;\n\n    for (let i = weekArray.length; i < 6; i += 1) {\n      lastExtraWeek = weekArray[weekArray.length - 1];\n      const lastDay = lastExtraWeek[lastExtraWeek.length - 1];\n      const extraWeek = [];\n\n      for (let j = 0; j < 7; j += 1) {\n        const outsideDate = clone(lastDay);\n        outsideDate.setDate(lastDay.getDate() + j + 1);\n        extraWeek.push(outsideDate);\n      }\n\n      weekArray.push(extraWeek);\n    }\n  }\n\n  return weekArray;\n}\n\nexport function startOfMonth(d) {\n  const newDate = clone(d);\n  newDate.setDate(1);\n  newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n  return newDate;\n}\n\nexport function getDayNodes(node, classNames) {\n  let outsideClassName;\n  if (classNames === defaultClassNames) {\n    // When using CSS modules prefix the modifier as required by the BEM syntax\n    outsideClassName = `${classNames.day}--${classNames.outside}`;\n  } else {\n    outsideClassName = `${classNames.outside}`;\n  }\n  const dayQuery = classNames.day.replace(/ /g, '.');\n  const outsideDayQuery = outsideClassName.replace(/ /g, '.');\n  const selector = `.${dayQuery}:not(.${outsideDayQuery})`;\n  return node.querySelectorAll(selector);\n}\n\nexport function nodeListToArray(nodeList) {\n  return Array.prototype.slice.call(nodeList, 0);\n}\n\nexport function hasOwnProp(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Helpers.js","const WEEKDAYS_LONG = [\n  'Sunday',\n  'Monday',\n  'Tuesday',\n  'Wednesday',\n  'Thursday',\n  'Friday',\n  'Saturday',\n];\n\nconst WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nconst MONTHS = [\n  'January',\n  'February',\n  'March',\n  'April',\n  'May',\n  'June',\n  'July',\n  'August',\n  'September',\n  'October',\n  'November',\n  'December',\n];\n\nexport function formatDay(day) {\n  return day.toDateString();\n}\n\nexport function formatMonthTitle(d) {\n  return `${MONTHS[d.getMonth()]} ${d.getFullYear()}`;\n}\n\nexport function formatWeekdayShort(i) {\n  return WEEKDAYS_SHORT[i];\n}\n\nexport function formatWeekdayLong(i) {\n  return WEEKDAYS_LONG[i];\n}\n\nexport function getFirstDayOfWeek() {\n  return 0;\n}\n\nexport function getMonths() {\n  return MONTHS;\n}\n\nexport default {\n  formatDay,\n  formatMonthTitle,\n  formatWeekdayShort,\n  formatWeekdayLong,\n  getFirstDayOfWeek,\n  getMonths,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/LocaleUtils.js","import { isDayAfter, isDayBefore, isDayInRange, isSameDay } from './DateUtils';\nimport { isRangeOfDates } from './Helpers';\n\n/**\n * Return `true` if a date matches the specified modifier.\n *\n * @export\n * @param {Date} day\n * @param {Any} modifier\n * @return {Boolean}\n */\nexport function dayMatchesModifier(day, modifier) {\n  if (!modifier) {\n    return false;\n  }\n  const arr = Array.isArray(modifier) ? modifier : [modifier];\n  return arr.some(mod => {\n    if (!mod) {\n      return false;\n    }\n    if (mod instanceof Date) {\n      return isSameDay(day, mod);\n    }\n    if (isRangeOfDates(mod)) {\n      return isDayInRange(day, mod);\n    }\n    if (mod.after && mod.before && isDayAfter(mod.before, mod.after)) {\n      return isDayAfter(day, mod.after) && isDayBefore(day, mod.before);\n    }\n    if (\n      mod.after &&\n      mod.before &&\n      (isDayAfter(mod.after, mod.before) || isSameDay(mod.after, mod.before))\n    ) {\n      return isDayAfter(day, mod.after) || isDayBefore(day, mod.before);\n    }\n    if (mod.after) {\n      return isDayAfter(day, mod.after);\n    }\n    if (mod.before) {\n      return isDayBefore(day, mod.before);\n    }\n    if (mod.daysOfWeek) {\n      return mod.daysOfWeek.some(dayOfWeek => day.getDay() === dayOfWeek);\n    }\n    if (typeof mod === 'function') {\n      return mod(day);\n    }\n    return false;\n  });\n}\n\n/**\n * Return the modifiers matching the given day for the given\n * object of modifiers.\n *\n * @export\n * @param {Date} day\n * @param {Object} [modifiersObj={}]\n * @return {Array}\n */\nexport function getModifiersForDay(day, modifiersObj = {}) {\n  return Object.keys(modifiersObj).reduce((modifiers, modifierName) => {\n    const value = modifiersObj[modifierName];\n    if (dayMatchesModifier(day, value)) {\n      modifiers.push(modifierName);\n    }\n    return modifiers;\n  }, []);\n}\n\nexport default { dayMatchesModifier, getModifiersForDay };\n\n\n\n// WEBPACK FOOTER //\n// ./src/ModifiersUtils.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Caption from './Caption';\nimport Navbar from './Navbar';\nimport Month from './Month';\nimport Weekday from './Weekday';\n\nimport * as Helpers from './Helpers';\nimport * as DateUtils from './DateUtils';\nimport * as LocaleUtils from './LocaleUtils';\nimport * as ModifiersUtils from './ModifiersUtils';\nimport classNames from './classNames';\n\nimport { ENTER, SPACE, LEFT, UP, DOWN, RIGHT } from './keys';\n\nexport class DayPicker extends Component {\n  dayPicker = null;\n\n  static propTypes = {\n    // Rendering months\n    initialMonth: PropTypes.instanceOf(Date),\n    month: PropTypes.instanceOf(Date),\n    numberOfMonths: PropTypes.number,\n    fromMonth: PropTypes.instanceOf(Date),\n    toMonth: PropTypes.instanceOf(Date),\n    canChangeMonth: PropTypes.bool,\n    reverseMonths: PropTypes.bool,\n    pagedNavigation: PropTypes.bool,\n    todayButton: PropTypes.string,\n    showWeekNumbers: PropTypes.bool,\n    showWeekDays: PropTypes.bool,\n\n    // Modifiers\n    selectedDays: PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.array,\n    ]),\n    disabledDays: PropTypes.oneOfType([\n      PropTypes.object,\n      PropTypes.func,\n      PropTypes.array,\n    ]),\n\n    modifiers: PropTypes.object,\n    modifiersStyles: PropTypes.object,\n\n    // Localization\n    dir: PropTypes.string,\n    firstDayOfWeek: PropTypes.oneOf([0, 1, 2, 3, 4, 5, 6]),\n    labels: PropTypes.shape({\n      nextMonth: PropTypes.string.isRequired,\n      previousMonth: PropTypes.string.isRequired,\n    }),\n    locale: PropTypes.string,\n    localeUtils: PropTypes.shape({\n      formatMonthTitle: PropTypes.func,\n      formatWeekdayShort: PropTypes.func,\n      formatWeekdayLong: PropTypes.func,\n      getFirstDayOfWeek: PropTypes.func,\n    }),\n    months: PropTypes.arrayOf(PropTypes.string),\n    weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n    weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n\n    // Customization\n    showOutsideDays: PropTypes.bool,\n    enableOutsideDaysClick: PropTypes.bool,\n    fixedWeeks: PropTypes.bool,\n\n    // CSS and HTML\n    classNames: PropTypes.shape({\n      body: PropTypes.string,\n      container: PropTypes.string,\n      day: PropTypes.string.isRequired,\n      disabled: PropTypes.string.isRequired,\n      footer: PropTypes.string,\n      interactionDisabled: PropTypes.string,\n      months: PropTypes.string,\n      month: PropTypes.string,\n      navBar: PropTypes.string,\n      outside: PropTypes.string.isRequired,\n      selected: PropTypes.string.isRequired,\n      today: PropTypes.string.isRequired,\n      todayButton: PropTypes.string,\n      week: PropTypes.string,\n      wrapper: PropTypes.string,\n    }),\n    className: PropTypes.string,\n    containerProps: PropTypes.object,\n    tabIndex: PropTypes.number,\n\n    // Custom elements\n    renderDay: PropTypes.func,\n    renderWeek: PropTypes.func,\n    weekdayElement: PropTypes.oneOfType([\n      PropTypes.element,\n      PropTypes.func,\n      PropTypes.instanceOf(Component),\n    ]),\n    navbarElement: PropTypes.oneOfType([\n      PropTypes.element,\n      PropTypes.func,\n      PropTypes.instanceOf(Component),\n    ]),\n    captionElement: PropTypes.oneOfType([\n      PropTypes.element,\n      PropTypes.func,\n      PropTypes.instanceOf(Component),\n    ]),\n\n    // Events\n    onBlur: PropTypes.func,\n    onFocus: PropTypes.func,\n    onKeyDown: PropTypes.func,\n    onDayClick: PropTypes.func,\n    onDayKeyDown: PropTypes.func,\n    onDayMouseEnter: PropTypes.func,\n    onDayMouseLeave: PropTypes.func,\n    onDayMouseDown: PropTypes.func,\n    onDayMouseUp: PropTypes.func,\n    onDayTouchStart: PropTypes.func,\n    onDayTouchEnd: PropTypes.func,\n    onDayFocus: PropTypes.func,\n    onMonthChange: PropTypes.func,\n    onCaptionClick: PropTypes.func,\n    onWeekClick: PropTypes.func,\n    onTodayButtonClick: PropTypes.func,\n  };\n\n  static defaultProps = {\n    classNames,\n    tabIndex: 0,\n    numberOfMonths: 1,\n    labels: {\n      previousMonth: 'Previous Month',\n      nextMonth: 'Next Month',\n    },\n    locale: 'en',\n    localeUtils: LocaleUtils,\n    showOutsideDays: false,\n    enableOutsideDaysClick: true,\n    fixedWeeks: false,\n    canChangeMonth: true,\n    reverseMonths: false,\n    pagedNavigation: false,\n    showWeekNumbers: false,\n    showWeekDays: true,\n    renderDay: day => day.getDate(),\n    renderWeek: weekNumber => weekNumber,\n    weekdayElement: <Weekday />,\n    navbarElement: <Navbar classNames={classNames} />,\n    captionElement: <Caption classNames={classNames} />,\n  };\n\n  constructor(props) {\n    super(props);\n\n    const currentMonth = this.getCurrentMonthFromProps(props);\n    this.state = { currentMonth };\n  }\n\n  componentDidUpdate(prevProps) {\n    // Changing the `month` props means changing the current displayed month\n    if (\n      prevProps.month !== this.props.month &&\n      !DateUtils.isSameMonth(prevProps.month, this.props.month)\n    ) {\n      const currentMonth = this.getCurrentMonthFromProps(this.props);\n      // eslint-disable-next-line react/no-did-update-set-state\n      this.setState({ currentMonth });\n    }\n  }\n\n  static VERSION = '7.4.10';\n\n  /**\n   * Return the month to be shown in the calendar based on the component props.\n   *\n   * @param {Object} props\n   * @returns Date\n   * @memberof DayPicker\n   * @private\n   */\n  getCurrentMonthFromProps(props) {\n    const initialMonth = Helpers.startOfMonth(\n      props.month || props.initialMonth || new Date()\n    );\n    let currentMonth = initialMonth;\n\n    if (props.pagedNavigation && props.numberOfMonths > 1 && props.fromMonth) {\n      const fromMonth = Helpers.startOfMonth(props.fromMonth);\n      const diffInMonths = Helpers.getMonthsDiff(fromMonth, currentMonth);\n      currentMonth = DateUtils.addMonths(\n        fromMonth,\n        Math.floor(diffInMonths / props.numberOfMonths) * props.numberOfMonths\n      );\n    } else if (\n      props.toMonth &&\n      props.numberOfMonths > 1 &&\n      Helpers.getMonthsDiff(currentMonth, props.toMonth) <= 0\n    ) {\n      currentMonth = DateUtils.addMonths(\n        Helpers.startOfMonth(props.toMonth),\n        1 - this.props.numberOfMonths\n      );\n    }\n    return currentMonth;\n  }\n\n  getNextNavigableMonth() {\n    return DateUtils.addMonths(\n      this.state.currentMonth,\n      this.props.numberOfMonths\n    );\n  }\n\n  getPreviousNavigableMonth() {\n    return DateUtils.addMonths(this.state.currentMonth, -1);\n  }\n\n  allowPreviousMonth() {\n    const previousMonth = DateUtils.addMonths(this.state.currentMonth, -1);\n    return this.allowMonth(previousMonth);\n  }\n\n  allowNextMonth() {\n    const nextMonth = DateUtils.addMonths(\n      this.state.currentMonth,\n      this.props.numberOfMonths\n    );\n    return this.allowMonth(nextMonth);\n  }\n\n  allowMonth(d) {\n    const { fromMonth, toMonth, canChangeMonth } = this.props;\n    if (\n      !canChangeMonth ||\n      (fromMonth && Helpers.getMonthsDiff(fromMonth, d) < 0) ||\n      (toMonth && Helpers.getMonthsDiff(toMonth, d) > 0)\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  allowYearChange() {\n    return this.props.canChangeMonth;\n  }\n\n  showMonth(d, callback) {\n    if (!this.allowMonth(d)) {\n      return;\n    }\n    this.setState({ currentMonth: Helpers.startOfMonth(d) }, () => {\n      if (callback) {\n        callback();\n      }\n      if (this.props.onMonthChange) {\n        this.props.onMonthChange(this.state.currentMonth);\n      }\n    });\n  }\n\n  showNextMonth = callback => {\n    if (!this.allowNextMonth()) {\n      return;\n    }\n    const deltaMonths = this.props.pagedNavigation\n      ? this.props.numberOfMonths\n      : 1;\n    const nextMonth = DateUtils.addMonths(this.state.currentMonth, deltaMonths);\n    this.showMonth(nextMonth, callback);\n  };\n\n  showPreviousMonth = callback => {\n    if (!this.allowPreviousMonth()) {\n      return;\n    }\n    const deltaMonths = this.props.pagedNavigation\n      ? this.props.numberOfMonths\n      : 1;\n    const previousMonth = DateUtils.addMonths(\n      this.state.currentMonth,\n      -deltaMonths\n    );\n    this.showMonth(previousMonth, callback);\n  };\n\n  showNextYear() {\n    if (!this.allowYearChange()) {\n      return;\n    }\n    const nextMonth = DateUtils.addMonths(this.state.currentMonth, 12);\n    this.showMonth(nextMonth);\n  }\n\n  showPreviousYear() {\n    if (!this.allowYearChange()) {\n      return;\n    }\n    const nextMonth = DateUtils.addMonths(this.state.currentMonth, -12);\n    this.showMonth(nextMonth);\n  }\n\n  focus() {\n    this.wrapper.focus();\n  }\n\n  focusFirstDayOfMonth() {\n    Helpers.getDayNodes(this.dayPicker, this.props.classNames)[0].focus();\n  }\n\n  focusLastDayOfMonth() {\n    const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n    dayNodes[dayNodes.length - 1].focus();\n  }\n\n  focusPreviousDay(dayNode) {\n    const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n    const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n    if (dayNodeIndex === -1) return;\n    if (dayNodeIndex === 0) {\n      this.showPreviousMonth(() => this.focusLastDayOfMonth());\n    } else {\n      dayNodes[dayNodeIndex - 1].focus();\n    }\n  }\n\n  focusNextDay(dayNode) {\n    const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n    const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n    if (dayNodeIndex === -1) return;\n    if (dayNodeIndex === dayNodes.length - 1) {\n      this.showNextMonth(() => this.focusFirstDayOfMonth());\n    } else {\n      dayNodes[dayNodeIndex + 1].focus();\n    }\n  }\n\n  focusNextWeek(dayNode) {\n    const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n    const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n    const isInLastWeekOfMonth = dayNodeIndex > dayNodes.length - 8;\n\n    if (isInLastWeekOfMonth) {\n      this.showNextMonth(() => {\n        const daysAfterIndex = dayNodes.length - dayNodeIndex;\n        const nextMonthDayNodeIndex = 7 - daysAfterIndex;\n        Helpers.getDayNodes(this.dayPicker, this.props.classNames)[\n          nextMonthDayNodeIndex\n        ].focus();\n      });\n    } else {\n      dayNodes[dayNodeIndex + 7].focus();\n    }\n  }\n\n  focusPreviousWeek(dayNode) {\n    const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n    const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n    const isInFirstWeekOfMonth = dayNodeIndex <= 6;\n\n    if (isInFirstWeekOfMonth) {\n      this.showPreviousMonth(() => {\n        const previousMonthDayNodes = Helpers.getDayNodes(\n          this.dayPicker,\n          this.props.classNames\n        );\n        const startOfLastWeekOfMonth = previousMonthDayNodes.length - 7;\n        const previousMonthDayNodeIndex = startOfLastWeekOfMonth + dayNodeIndex;\n        previousMonthDayNodes[previousMonthDayNodeIndex].focus();\n      });\n    } else {\n      dayNodes[dayNodeIndex - 7].focus();\n    }\n  }\n\n  // Event handlers\n\n  handleKeyDown = e => {\n    e.persist();\n\n    switch (e.keyCode) {\n      case LEFT:\n        if (this.props.dir === 'rtl') {\n          this.showNextMonth();\n        } else {\n          this.showPreviousMonth();\n        }\n        Helpers.cancelEvent(e);\n        break;\n      case RIGHT:\n        if (this.props.dir === 'rtl') {\n          this.showPreviousMonth();\n        } else {\n          this.showNextMonth();\n        }\n        Helpers.cancelEvent(e);\n        break;\n      case UP:\n        this.showPreviousYear();\n        Helpers.cancelEvent(e);\n        break;\n      case DOWN:\n        this.showNextYear();\n        Helpers.cancelEvent(e);\n        break;\n      default:\n        break;\n    }\n\n    if (this.props.onKeyDown) {\n      this.props.onKeyDown(e);\n    }\n  };\n\n  handleDayKeyDown = (day, modifiers, e) => {\n    e.persist();\n\n    switch (e.keyCode) {\n      case LEFT:\n        Helpers.cancelEvent(e);\n        if (this.props.dir === 'rtl') {\n          this.focusNextDay(e.target);\n        } else {\n          this.focusPreviousDay(e.target);\n        }\n        break;\n      case RIGHT:\n        Helpers.cancelEvent(e);\n        if (this.props.dir === 'rtl') {\n          this.focusPreviousDay(e.target);\n        } else {\n          this.focusNextDay(e.target);\n        }\n        break;\n      case UP:\n        Helpers.cancelEvent(e);\n        this.focusPreviousWeek(e.target);\n        break;\n      case DOWN:\n        Helpers.cancelEvent(e);\n        this.focusNextWeek(e.target);\n        break;\n      case ENTER:\n      case SPACE:\n        Helpers.cancelEvent(e);\n        if (this.props.onDayClick) {\n          this.handleDayClick(day, modifiers, e);\n        }\n        break;\n      default:\n        break;\n    }\n    if (this.props.onDayKeyDown) {\n      this.props.onDayKeyDown(day, modifiers, e);\n    }\n  };\n\n  handleDayClick = (day, modifiers, e) => {\n    e.persist();\n\n    if (\n      modifiers[this.props.classNames.outside] &&\n      this.props.enableOutsideDaysClick\n    ) {\n      this.handleOutsideDayClick(day);\n    }\n    if (this.props.onDayClick) {\n      this.props.onDayClick(day, modifiers, e);\n    }\n  };\n\n  handleOutsideDayClick(day) {\n    const { currentMonth } = this.state;\n    const { numberOfMonths } = this.props;\n    const diffInMonths = Helpers.getMonthsDiff(currentMonth, day);\n    if (diffInMonths > 0 && diffInMonths >= numberOfMonths) {\n      this.showNextMonth();\n    } else if (diffInMonths < 0) {\n      this.showPreviousMonth();\n    }\n  }\n\n  handleTodayButtonClick = e => {\n    const today = new Date();\n    const month = new Date(today.getFullYear(), today.getMonth());\n    this.showMonth(month);\n    e.target.blur();\n    if (this.props.onTodayButtonClick) {\n      e.persist();\n      this.props.onTodayButtonClick(\n        new Date(today.getFullYear(), today.getMonth(), today.getDate()),\n        ModifiersUtils.getModifiersForDay(today, this.props.modifiers),\n        e\n      );\n    }\n  };\n\n  renderNavbar() {\n    const {\n      labels,\n      locale,\n      localeUtils,\n      canChangeMonth,\n      navbarElement,\n      ...attributes\n    } = this.props;\n\n    if (!canChangeMonth) return null;\n\n    const props = {\n      month: this.state.currentMonth,\n      classNames: this.props.classNames,\n      className: this.props.classNames.navBar,\n      nextMonth: this.getNextNavigableMonth(),\n      previousMonth: this.getPreviousNavigableMonth(),\n      showPreviousButton: this.allowPreviousMonth(),\n      showNextButton: this.allowNextMonth(),\n      onNextClick: this.showNextMonth,\n      onPreviousClick: this.showPreviousMonth,\n      dir: attributes.dir,\n      labels,\n      locale,\n      localeUtils,\n    };\n    return React.isValidElement(navbarElement)\n      ? React.cloneElement(navbarElement, props)\n      : React.createElement(navbarElement, props);\n  }\n\n  renderMonths() {\n    const months = [];\n    const firstDayOfWeek = Helpers.getFirstDayOfWeekFromProps(this.props);\n    for (let i = 0; i < this.props.numberOfMonths; i += 1) {\n      const month = DateUtils.addMonths(this.state.currentMonth, i);\n      months.push(\n        <Month\n          key={i}\n          {...this.props}\n          month={month}\n          firstDayOfWeek={firstDayOfWeek}\n          onDayKeyDown={this.handleDayKeyDown}\n          onDayClick={this.handleDayClick}\n        />\n      );\n    }\n\n    if (this.props.reverseMonths) {\n      months.reverse();\n    }\n    return months;\n  }\n\n  renderFooter() {\n    if (this.props.todayButton) {\n      return (\n        <div className={this.props.classNames.footer}>\n          {this.renderTodayButton()}\n        </div>\n      );\n    }\n    return null;\n  }\n\n  renderTodayButton() {\n    return (\n      <button\n        type=\"button\"\n        tabIndex={0}\n        className={this.props.classNames.todayButton}\n        aria-label={this.props.todayButton}\n        onClick={this.handleTodayButtonClick}\n      >\n        {this.props.todayButton}\n      </button>\n    );\n  }\n\n  render() {\n    let className = this.props.classNames.container;\n\n    if (!this.props.onDayClick) {\n      className = `${className} ${this.props.classNames.interactionDisabled}`;\n    }\n    if (this.props.className) {\n      className = `${className} ${this.props.className}`;\n    }\n    return (\n      <div\n        {...this.props.containerProps}\n        className={className}\n        ref={el => (this.dayPicker = el)}\n        lang={this.props.locale}\n      >\n        <div\n          className={this.props.classNames.wrapper}\n          ref={el => (this.wrapper = el)}\n          tabIndex={\n            this.props.canChangeMonth &&\n            typeof this.props.tabIndex !== 'undefined'\n              ? this.props.tabIndex\n              : -1\n          }\n          onKeyDown={this.handleKeyDown}\n          onFocus={this.props.onFocus}\n          onBlur={this.props.onBlur}\n        >\n          {this.renderNavbar()}\n          <div className={this.props.classNames.months}>\n            {this.renderMonths()}\n          </div>\n          {this.renderFooter()}\n        </div>\n      </div>\n    );\n  }\n}\n\nDayPicker.DateUtils = DateUtils;\nDayPicker.LocaleUtils = LocaleUtils;\nDayPicker.ModifiersUtils = ModifiersUtils;\n\nexport { DateUtils, LocaleUtils, ModifiersUtils };\n\nexport default DayPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/DayPicker.js","// Entry point for the umd package\nconst DayPicker = require('./DayPicker').default;\nDayPicker.Input = require('./DayPickerInput').default;\n\nexport default DayPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/umd.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LocaleUtils from './LocaleUtils';\n\nimport { ENTER } from './keys';\n\nexport default class Caption extends Component {\n  static propTypes = {\n    date: PropTypes.instanceOf(Date),\n    months: PropTypes.arrayOf(PropTypes.string),\n    locale: PropTypes.string,\n    localeUtils: PropTypes.object,\n    onClick: PropTypes.func,\n    classNames: PropTypes.shape({\n      caption: PropTypes.string.isRequired,\n    }).isRequired,\n  };\n\n  static defaultProps = {\n    localeUtils: LocaleUtils,\n  };\n\n  constructor(props) {\n    super(props);\n    this.handleKeyUp = this.handleKeyUp.bind(this);\n  }\n\n  shouldComponentUpdate(nextProps) {\n    return (\n      nextProps.locale !== this.props.locale ||\n      nextProps.classNames !== this.props.classNames ||\n      nextProps.date.getMonth() !== this.props.date.getMonth() ||\n      nextProps.date.getFullYear() !== this.props.date.getFullYear()\n    );\n  }\n\n  handleKeyUp(e) {\n    if (e.keyCode === ENTER) {\n      this.props.onClick(e);\n    }\n  }\n\n  render() {\n    const {\n      classNames,\n      date,\n      months,\n      locale,\n      localeUtils,\n      onClick,\n    } = this.props;\n    return (\n      <div className={classNames.caption} role=\"heading\" aria-live=\"polite\">\n        <div onClick={onClick} onKeyUp={this.handleKeyUp}>\n          {months\n            ? `${months[date.getMonth()]} ${date.getFullYear()}`\n            : localeUtils.formatMonthTitle(date, locale)}\n        </div>\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Caption.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport defaultClassNames from './classNames';\nimport { SPACE, ENTER } from './keys';\n\nexport default class Navbar extends Component {\n  static propTypes = {\n    classNames: PropTypes.shape({\n      navBar: PropTypes.string.isRequired,\n      navButtonPrev: PropTypes.string.isRequired,\n      navButtonNext: PropTypes.string.isRequired,\n      navButtonInteractionDisabled: PropTypes.string.isRequired,\n    }),\n    className: PropTypes.string,\n    showPreviousButton: PropTypes.bool,\n    showNextButton: PropTypes.bool,\n    onPreviousClick: PropTypes.func,\n    onNextClick: PropTypes.func,\n    dir: PropTypes.string,\n    labels: PropTypes.shape({\n      previousMonth: PropTypes.string.isRequired,\n      nextMonth: PropTypes.string.isRequired,\n    }),\n  };\n\n  static defaultProps = {\n    classNames: defaultClassNames,\n    dir: 'ltr',\n    labels: {\n      previousMonth: 'Previous Month',\n      nextMonth: 'Next Month',\n    },\n    showPreviousButton: true,\n    showNextButton: true,\n  };\n\n  shouldComponentUpdate(nextProps) {\n    return (\n      nextProps.labels !== this.props.labels ||\n      nextProps.dir !== this.props.dir ||\n      this.props.showPreviousButton !== nextProps.showPreviousButton ||\n      this.props.showNextButton !== nextProps.showNextButton\n    );\n  }\n\n  handleNextClick = () => {\n    if (this.props.onNextClick) {\n      this.props.onNextClick();\n    }\n  };\n\n  handlePreviousClick = () => {\n    if (this.props.onPreviousClick) {\n      this.props.onPreviousClick();\n    }\n  };\n\n  handleNextKeyDown = e => {\n    if (e.keyCode !== ENTER && e.keyCode !== SPACE) {\n      return;\n    }\n    e.preventDefault();\n    this.handleNextClick();\n  };\n\n  handlePreviousKeyDown = e => {\n    if (e.keyCode !== ENTER && e.keyCode !== SPACE) {\n      return;\n    }\n    e.preventDefault();\n    this.handlePreviousClick();\n  };\n\n  render() {\n    const {\n      classNames,\n      className,\n      showPreviousButton,\n      showNextButton,\n      labels,\n      dir,\n    } = this.props;\n\n    let previousClickHandler;\n    let nextClickHandler;\n    let previousKeyDownHandler;\n    let nextKeyDownHandler;\n    let shouldShowPrevious;\n    let shouldShowNext;\n\n    if (dir === 'rtl') {\n      previousClickHandler = this.handleNextClick;\n      nextClickHandler = this.handlePreviousClick;\n      previousKeyDownHandler = this.handleNextKeyDown;\n      nextKeyDownHandler = this.handlePreviousKeyDown;\n      shouldShowNext = showPreviousButton;\n      shouldShowPrevious = showNextButton;\n    } else {\n      previousClickHandler = this.handlePreviousClick;\n      nextClickHandler = this.handleNextClick;\n      previousKeyDownHandler = this.handlePreviousKeyDown;\n      nextKeyDownHandler = this.handleNextKeyDown;\n      shouldShowNext = showNextButton;\n      shouldShowPrevious = showPreviousButton;\n    }\n\n    const previousClassName = shouldShowPrevious\n      ? classNames.navButtonPrev\n      : `${classNames.navButtonPrev} ${classNames.navButtonInteractionDisabled}`;\n\n    const nextClassName = shouldShowNext\n      ? classNames.navButtonNext\n      : `${classNames.navButtonNext} ${classNames.navButtonInteractionDisabled}`;\n\n    const previousButton = (\n      <span\n        tabIndex=\"0\"\n        role=\"button\"\n        aria-label={labels.previousMonth}\n        key=\"previous\"\n        className={previousClassName}\n        onKeyDown={shouldShowPrevious ? previousKeyDownHandler : undefined}\n        onClick={shouldShowPrevious ? previousClickHandler : undefined}\n      />\n    );\n\n    const nextButton = (\n      <span\n        tabIndex=\"0\"\n        role=\"button\"\n        aria-label={labels.nextMonth}\n        key=\"right\"\n        className={nextClassName}\n        onKeyDown={shouldShowNext ? nextKeyDownHandler : undefined}\n        onClick={shouldShowNext ? nextClickHandler : undefined}\n      />\n    );\n\n    return (\n      <div className={className || classNames.navBar}>\n        {dir === 'rtl'\n          ? [nextButton, previousButton]\n          : [previousButton, nextButton]}\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Navbar.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Weekdays from './Weekdays';\nimport Day from './Day';\nimport { ENTER } from './keys';\n\nimport * as ModifiersUtils from './ModifiersUtils';\nimport * as Helpers from './Helpers';\nimport * as DateUtils from './DateUtils';\n\nexport default class Month extends Component {\n  static propTypes = {\n    classNames: PropTypes.shape({\n      body: PropTypes.string.isRequired,\n      month: PropTypes.string.isRequired,\n      outside: PropTypes.string.isRequired,\n      today: PropTypes.string.isRequired,\n      week: PropTypes.string.isRequired,\n      weekNumber: PropTypes.string.isRequired,\n      disabled: PropTypes.string.isRequired,\n      selected: PropTypes.string.isRequired,\n    }).isRequired,\n    tabIndex: PropTypes.number,\n\n    month: PropTypes.instanceOf(Date).isRequired,\n    months: PropTypes.arrayOf(PropTypes.string),\n\n    modifiersStyles: PropTypes.object,\n\n    showWeekDays: PropTypes.bool,\n    showOutsideDays: PropTypes.bool,\n\n    renderDay: PropTypes.func.isRequired,\n    renderWeek: PropTypes.func.isRequired,\n\n    captionElement: PropTypes.oneOfType([\n      PropTypes.element,\n      PropTypes.func,\n      PropTypes.instanceOf(React.Component),\n    ]).isRequired,\n    weekdayElement: PropTypes.oneOfType([\n      PropTypes.element,\n      PropTypes.func,\n      PropTypes.instanceOf(React.Component),\n    ]),\n\n    fixedWeeks: PropTypes.bool,\n    showWeekNumbers: PropTypes.bool,\n\n    locale: PropTypes.string.isRequired,\n    localeUtils: PropTypes.object.isRequired,\n    weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n    weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n    firstDayOfWeek: PropTypes.number.isRequired,\n\n    onCaptionClick: PropTypes.func,\n    onDayClick: PropTypes.func,\n    onDayFocus: PropTypes.func,\n    onDayKeyDown: PropTypes.func,\n    onDayMouseEnter: PropTypes.func,\n    onDayMouseLeave: PropTypes.func,\n    onDayMouseDown: PropTypes.func,\n    onDayMouseUp: PropTypes.func,\n    onDayTouchEnd: PropTypes.func,\n    onDayTouchStart: PropTypes.func,\n    onWeekClick: PropTypes.func,\n  };\n\n  renderDay = day => {\n    const monthNumber = this.props.month.getMonth();\n    const propModifiers = Helpers.getModifiersFromProps(this.props);\n    const dayModifiers = ModifiersUtils.getModifiersForDay(day, propModifiers);\n    if (\n      DateUtils.isSameDay(day, new Date()) &&\n      !Object.prototype.hasOwnProperty.call(\n        propModifiers,\n        this.props.classNames.today\n      )\n    ) {\n      dayModifiers.push(this.props.classNames.today);\n    }\n    if (day.getMonth() !== monthNumber) {\n      dayModifiers.push(this.props.classNames.outside);\n    }\n\n    const isOutside = day.getMonth() !== monthNumber;\n    let tabIndex = -1;\n    // Focus on the first day of the month\n    if (this.props.onDayClick && !isOutside && day.getDate() === 1) {\n      tabIndex = this.props.tabIndex; // eslint-disable-line prefer-destructuring\n    }\n    const key = `${day.getFullYear()}${day.getMonth()}${day.getDate()}`;\n    const modifiers = {};\n    dayModifiers.forEach(modifier => {\n      modifiers[modifier] = true;\n    });\n\n    return (\n      <Day\n        key={`${isOutside ? 'outside-' : ''}${key}`}\n        classNames={this.props.classNames}\n        day={day}\n        modifiers={modifiers}\n        modifiersStyles={this.props.modifiersStyles}\n        empty={\n          isOutside && !this.props.showOutsideDays && !this.props.fixedWeeks\n        }\n        tabIndex={tabIndex}\n        ariaLabel={this.props.localeUtils.formatDay(day, this.props.locale)}\n        ariaDisabled={\n          isOutside || dayModifiers.indexOf(this.props.classNames.disabled) > -1\n        }\n        ariaSelected={dayModifiers.indexOf(this.props.classNames.selected) > -1}\n        onClick={this.props.onDayClick}\n        onFocus={this.props.onDayFocus}\n        onKeyDown={this.props.onDayKeyDown}\n        onMouseEnter={this.props.onDayMouseEnter}\n        onMouseLeave={this.props.onDayMouseLeave}\n        onMouseDown={this.props.onDayMouseDown}\n        onMouseUp={this.props.onDayMouseUp}\n        onTouchEnd={this.props.onDayTouchEnd}\n        onTouchStart={this.props.onDayTouchStart}\n      >\n        {this.props.renderDay(day, modifiers)}\n      </Day>\n    );\n  };\n\n  render() {\n    const {\n      classNames,\n\n      month,\n      months,\n\n      fixedWeeks,\n      captionElement,\n      weekdayElement,\n\n      locale,\n      localeUtils,\n      weekdaysLong,\n      weekdaysShort,\n      firstDayOfWeek,\n\n      onCaptionClick,\n\n      showWeekNumbers,\n      showWeekDays,\n      onWeekClick,\n    } = this.props;\n\n    const captionProps = {\n      date: month,\n      classNames,\n      months,\n      localeUtils,\n      locale,\n      onClick: onCaptionClick ? e => onCaptionClick(month, e) : undefined,\n    };\n    const caption = React.isValidElement(captionElement)\n      ? React.cloneElement(captionElement, captionProps)\n      : React.createElement(captionElement, captionProps);\n\n    const weeks = Helpers.getWeekArray(month, firstDayOfWeek, fixedWeeks);\n    return (\n      <div className={classNames.month} role=\"grid\">\n        {caption}\n        {showWeekDays && (\n          <Weekdays\n            classNames={classNames}\n            weekdaysShort={weekdaysShort}\n            weekdaysLong={weekdaysLong}\n            firstDayOfWeek={firstDayOfWeek}\n            showWeekNumbers={showWeekNumbers}\n            locale={locale}\n            localeUtils={localeUtils}\n            weekdayElement={weekdayElement}\n          />\n        )}\n        <div className={classNames.body} role=\"rowgroup\">\n          {weeks.map(week => {\n            let weekNumber;\n            if (showWeekNumbers) {\n              weekNumber = DateUtils.getWeekNumber(week[6]);\n            }\n            return (\n              <div\n                key={week[0].getTime()}\n                className={classNames.week}\n                role=\"row\"\n              >\n                {showWeekNumbers && (\n                  <div\n                    className={classNames.weekNumber}\n                    tabIndex={onWeekClick ? 0 : -1}\n                    role=\"gridcell\"\n                    onClick={\n                      onWeekClick\n                        ? e => onWeekClick(weekNumber, week, e)\n                        : undefined\n                    }\n                    onKeyUp={\n                      onWeekClick\n                        ? e =>\n                            e.keyCode === ENTER &&\n                            onWeekClick(weekNumber, week, e)\n                        : undefined\n                    }\n                  >\n                    {this.props.renderWeek(weekNumber, week, month)}\n                  </div>\n                )}\n                {week.map(this.renderDay)}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Month.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Weekdays extends Component {\n  static propTypes = {\n    classNames: PropTypes.shape({\n      weekday: PropTypes.string.isRequired,\n      weekdays: PropTypes.string.isRequired,\n      weekdaysRow: PropTypes.string.isRequired,\n    }).isRequired,\n\n    firstDayOfWeek: PropTypes.number.isRequired,\n    weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n    weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n    showWeekNumbers: PropTypes.bool,\n    locale: PropTypes.string.isRequired,\n    localeUtils: PropTypes.object.isRequired,\n    weekdayElement: PropTypes.oneOfType([\n      PropTypes.element,\n      PropTypes.func,\n      PropTypes.instanceOf(React.Component),\n    ]),\n  };\n\n  shouldComponentUpdate(nextProps) {\n    return this.props !== nextProps;\n  }\n\n  render() {\n    const {\n      classNames,\n      firstDayOfWeek,\n      showWeekNumbers,\n      weekdaysLong,\n      weekdaysShort,\n      locale,\n      localeUtils,\n      weekdayElement,\n    } = this.props;\n    const days = [];\n    for (let i = 0; i < 7; i += 1) {\n      const weekday = (i + firstDayOfWeek) % 7;\n      const elementProps = {\n        key: i,\n        className: classNames.weekday,\n        weekday,\n        weekdaysLong,\n        weekdaysShort,\n        localeUtils,\n        locale,\n      };\n      const element = React.isValidElement(weekdayElement)\n        ? React.cloneElement(weekdayElement, elementProps)\n        : React.createElement(weekdayElement, elementProps);\n      days.push(element);\n    }\n\n    return (\n      <div className={classNames.weekdays} role=\"rowgroup\">\n        <div className={classNames.weekdaysRow} role=\"row\">\n          {showWeekNumbers && <div className={classNames.weekday} />}\n          {days}\n        </div>\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Weekdays.js","/* eslint-disable jsx-a11y/no-static-element-interactions, react/forbid-prop-types */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { isSameDay } from './DateUtils';\nimport { hasOwnProp } from './Helpers';\n\nimport defaultClassNames from './classNames';\n\nfunction handleEvent(handler, day, modifiers) {\n  if (!handler) {\n    return undefined;\n  }\n  return e => {\n    e.persist();\n    handler(day, modifiers, e);\n  };\n}\n\nexport default class Day extends Component {\n  static propTypes = {\n    classNames: PropTypes.shape({\n      day: PropTypes.string.isRequired,\n    }).isRequired,\n\n    day: PropTypes.instanceOf(Date).isRequired,\n    children: PropTypes.node.isRequired,\n\n    ariaDisabled: PropTypes.bool,\n    ariaLabel: PropTypes.string,\n    ariaSelected: PropTypes.bool,\n    empty: PropTypes.bool,\n    modifiers: PropTypes.object,\n    modifiersStyles: PropTypes.object,\n    onClick: PropTypes.func,\n    onKeyDown: PropTypes.func,\n    onMouseEnter: PropTypes.func,\n    onMouseLeave: PropTypes.func,\n    onMouseDown: PropTypes.func,\n    onMouseUp: PropTypes.func,\n    onTouchEnd: PropTypes.func,\n    onTouchStart: PropTypes.func,\n    onFocus: PropTypes.func,\n    tabIndex: PropTypes.number,\n  };\n\n  static defaultProps = {\n    tabIndex: -1,\n  };\n\n  static defaultProps = {\n    modifiers: {},\n    modifiersStyles: {},\n    empty: false,\n  };\n\n  shouldComponentUpdate(nextProps) {\n    const propNames = Object.keys(this.props);\n    const nextPropNames = Object.keys(nextProps);\n    if (propNames.length !== nextPropNames.length) {\n      return true;\n    }\n    return propNames.some(name => {\n      if (\n        name === 'modifiers' ||\n        name === 'modifiersStyles' ||\n        name === 'classNames'\n      ) {\n        const prop = this.props[name];\n        const nextProp = nextProps[name];\n        const modifiers = Object.keys(prop);\n        const nextModifiers = Object.keys(nextProp);\n        if (modifiers.length !== nextModifiers.length) {\n          return true;\n        }\n        return modifiers.some(\n          mod => !hasOwnProp(nextProp, mod) || prop[mod] !== nextProp[mod]\n        );\n      }\n      if (name === 'day') {\n        return !isSameDay(this.props[name], nextProps[name]);\n      }\n      return (\n        !hasOwnProp(nextProps, name) || this.props[name] !== nextProps[name]\n      );\n    });\n  }\n\n  render() {\n    const {\n      classNames,\n      modifiersStyles,\n      day,\n      tabIndex,\n      empty,\n      modifiers,\n      onMouseEnter,\n      onMouseLeave,\n      onMouseUp,\n      onMouseDown,\n      onClick,\n      onKeyDown,\n      onTouchStart,\n      onTouchEnd,\n      onFocus,\n      ariaLabel,\n      ariaDisabled,\n      ariaSelected,\n      children,\n    } = this.props;\n\n    let className = classNames.day;\n    if (classNames !== defaultClassNames) {\n      // When using CSS modules prefix the modifier as required by the BEM syntax\n      className += ` ${Object.keys(modifiers).join(' ')}`;\n    } else {\n      className += Object.keys(modifiers)\n        .map(modifier => ` ${className}--${modifier}`)\n        .join('');\n    }\n\n    let style;\n    if (modifiersStyles) {\n      Object.keys(modifiers)\n        .filter(modifier => !!modifiersStyles[modifier])\n        .forEach(modifier => {\n          style = { ...style, ...modifiersStyles[modifier] };\n        });\n    }\n\n    if (empty) {\n      return <div aria-disabled className={className} style={style} />;\n    }\n    return (\n      <div\n        className={className}\n        tabIndex={tabIndex}\n        style={style}\n        role=\"gridcell\"\n        aria-label={ariaLabel}\n        aria-disabled={ariaDisabled}\n        aria-selected={ariaSelected}\n        onClick={handleEvent(onClick, day, modifiers)}\n        onKeyDown={handleEvent(onKeyDown, day, modifiers)}\n        onMouseEnter={handleEvent(onMouseEnter, day, modifiers)}\n        onMouseLeave={handleEvent(onMouseLeave, day, modifiers)}\n        onMouseUp={handleEvent(onMouseUp, day, modifiers)}\n        onMouseDown={handleEvent(onMouseDown, day, modifiers)}\n        onTouchEnd={handleEvent(onTouchEnd, day, modifiers)}\n        onTouchStart={handleEvent(onTouchStart, day, modifiers)}\n        onFocus={handleEvent(onFocus, day, modifiers)}\n      >\n        {children}\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Day.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Weekday extends Component {\n  static propTypes = {\n    weekday: PropTypes.number,\n    className: PropTypes.string,\n    locale: PropTypes.string,\n    localeUtils: PropTypes.object,\n\n    weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n    weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n  };\n\n  shouldComponentUpdate(nextProps) {\n    return this.props !== nextProps;\n  }\n\n  render() {\n    const {\n      weekday,\n      className,\n      weekdaysLong,\n      weekdaysShort,\n      localeUtils,\n      locale,\n    } = this.props;\n    let title;\n    if (weekdaysLong) {\n      title = weekdaysLong[weekday];\n    } else {\n      title = localeUtils.formatWeekdayLong(weekday, locale);\n    }\n    let content;\n    if (weekdaysShort) {\n      content = weekdaysShort[weekday];\n    } else {\n      content = localeUtils.formatWeekdayShort(weekday, locale);\n    }\n\n    return (\n      <div className={className} role=\"columnheader\">\n        <abbr title={title}>{content}</abbr>\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Weekday.js","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DayPicker from './DayPicker';\nimport { isSameMonth, isDate } from './DateUtils';\nimport { getModifiersForDay } from './ModifiersUtils';\nimport { ESC, TAB } from './keys';\n\n// When clicking on a day cell, overlay will be hidden after this timeout\nexport const HIDE_TIMEOUT = 100;\n\n/**\n * The default component used as Overlay.\n *\n * @param {Object} props\n */\nexport function OverlayComponent({\n  input,\n  selectedDay,\n  month,\n  children,\n  classNames,\n  ...props\n}) {\n  return (\n    <div className={classNames.overlayWrapper} {...props}>\n      <div className={classNames.overlay}>{children}</div>\n    </div>\n  );\n}\n\nOverlayComponent.propTypes = {\n  input: PropTypes.any,\n  selectedDay: PropTypes.any,\n  month: PropTypes.instanceOf(Date),\n  children: PropTypes.node,\n  classNames: PropTypes.object,\n};\n\n/**\n * The default function used to format a Date to String, passed to the `format`\n * prop.\n * @param {Date} d\n * @return {String}\n */\nexport function defaultFormat(d) {\n  if (isDate(d)) {\n    const year = d.getFullYear();\n    const month = `${d.getMonth() + 1}`;\n    const day = `${d.getDate()}`;\n    return `${year}-${month}-${day}`;\n  }\n  return '';\n}\n\n/**\n * The default function used to parse a String as Date, passed to the `parse`\n * prop.\n * @param {String} str\n * @return {Date}\n */\nexport function defaultParse(str) {\n  if (typeof str !== 'string') {\n    return undefined;\n  }\n  const split = str.split('-');\n  if (split.length !== 3) {\n    return undefined;\n  }\n  const year = parseInt(split[0], 10);\n  const month = parseInt(split[1], 10) - 1;\n  const day = parseInt(split[2], 10);\n  if (\n    isNaN(year) ||\n    String(year).length > 4 ||\n    isNaN(month) ||\n    isNaN(day) ||\n    day <= 0 ||\n    day > 31 ||\n    month < 0 ||\n    month >= 12\n  ) {\n    return undefined;\n  }\n\n  return new Date(year, month, day, 12, 0, 0, 0); // always set noon to avoid time zone issues\n}\n\nexport default class DayPickerInput extends React.Component {\n  input = null;\n\n  daypicker = null;\n\n  clickTimeout = null;\n\n  hideTimeout = null;\n\n  inputBlurTimeout = null;\n\n  inputFocusTimeout = null;\n\n  static propTypes = {\n    value: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]),\n    inputProps: PropTypes.object,\n    placeholder: PropTypes.string,\n\n    format: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string),\n    ]),\n\n    formatDate: PropTypes.func,\n    parseDate: PropTypes.func,\n    typedValue: PropTypes.string,\n\n    showOverlay: PropTypes.bool,\n    dayPickerProps: PropTypes.object,\n    hideOnDayClick: PropTypes.bool,\n    clickUnselectsDay: PropTypes.bool,\n    keepFocus: PropTypes.bool,\n    component: PropTypes.any,\n    overlayComponent: PropTypes.any,\n\n    style: PropTypes.object,\n    classNames: PropTypes.shape({\n      container: PropTypes.string,\n      overlayWrapper: PropTypes.string,\n      overlay: PropTypes.string.isRequired,\n    }),\n\n    onDayChange: PropTypes.func,\n    onDayPickerHide: PropTypes.func,\n    onDayPickerShow: PropTypes.func,\n    onChange: PropTypes.func,\n    onClick: PropTypes.func,\n    onFocus: PropTypes.func,\n    onBlur: PropTypes.func,\n    onKeyUp: PropTypes.func,\n  };\n\n  static defaultProps = {\n    dayPickerProps: {},\n    value: '',\n    typedValue: '',\n    placeholder: 'YYYY-M-D',\n    format: 'L',\n    formatDate: defaultFormat,\n    parseDate: defaultParse,\n    showOverlay: false,\n    hideOnDayClick: true,\n    clickUnselectsDay: false,\n    keepFocus: true,\n    component: 'input',\n    inputProps: {},\n    overlayComponent: OverlayComponent,\n    classNames: {\n      container: 'DayPickerInput',\n      overlayWrapper: 'DayPickerInput-OverlayWrapper',\n      overlay: 'DayPickerInput-Overlay',\n    },\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = this.getInitialStateFromProps(props);\n    this.state.showOverlay = props.showOverlay;\n\n    this.hideAfterDayClick = this.hideAfterDayClick.bind(this);\n    this.handleInputClick = this.handleInputClick.bind(this);\n    this.handleInputFocus = this.handleInputFocus.bind(this);\n    this.handleInputBlur = this.handleInputBlur.bind(this);\n    this.handleInputChange = this.handleInputChange.bind(this);\n    this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n    this.handleInputKeyUp = this.handleInputKeyUp.bind(this);\n    this.handleDayClick = this.handleDayClick.bind(this);\n    this.handleMonthChange = this.handleMonthChange.bind(this);\n    this.handleOverlayFocus = this.handleOverlayFocus.bind(this);\n    this.handleOverlayBlur = this.handleOverlayBlur.bind(this);\n  }\n\n  componentDidUpdate(prevProps) {\n    const newState = {};\n\n    // Current props\n    const { value, formatDate, format, dayPickerProps } = this.props;\n\n    // Update the input value if `value`, `dayPickerProps.locale` or `format`\n    // props have changed\n    if (\n      value !== prevProps.value ||\n      dayPickerProps.locale !== prevProps.dayPickerProps.locale ||\n      format !== prevProps.format\n    ) {\n      if (isDate(value)) {\n        newState.value = formatDate(value, format, dayPickerProps.locale);\n      } else {\n        newState.value = value;\n      }\n    }\n\n    // Update the month if the months from props changed\n    const prevMonth = prevProps.dayPickerProps.month;\n    if (\n      dayPickerProps.month &&\n      dayPickerProps.month !== prevMonth &&\n      !isSameMonth(dayPickerProps.month, prevMonth)\n    ) {\n      newState.month = dayPickerProps.month;\n    }\n\n    // Updated the selected days from props if they changed\n    if (prevProps.dayPickerProps.selectedDays !== dayPickerProps.selectedDays) {\n      newState.selectedDays = dayPickerProps.selectedDays;\n    }\n\n    if (Object.keys(newState).length > 0) {\n      // eslint-disable-next-line react/no-did-update-set-state\n      this.setState(newState);\n    }\n  }\n\n  componentWillUnmount() {\n    clearTimeout(this.clickTimeout);\n    clearTimeout(this.hideTimeout);\n    clearTimeout(this.inputFocusTimeout);\n    clearTimeout(this.inputBlurTimeout);\n    clearTimeout(this.overlayBlurTimeout);\n  }\n\n  getInitialMonthFromProps(props) {\n    const { dayPickerProps, format } = props;\n    let day;\n    if (props.value) {\n      if (isDate(props.value)) {\n        day = props.value;\n      } else {\n        day = props.parseDate(props.value, format, dayPickerProps.locale);\n      }\n    }\n    return (\n      dayPickerProps.initialMonth || dayPickerProps.month || day || new Date()\n    );\n  }\n\n  getInitialStateFromProps(props) {\n    const { dayPickerProps, formatDate, format, typedValue } = props;\n    let { value } = props;\n    if (props.value && isDate(props.value)) {\n      value = formatDate(props.value, format, dayPickerProps.locale);\n    }\n\n    return {\n      value,\n      typedValue,\n      month: this.getInitialMonthFromProps(props),\n      selectedDays: dayPickerProps.selectedDays,\n    };\n  }\n\n  getInput() {\n    return this.input;\n  }\n\n  getDayPicker() {\n    return this.daypicker;\n  }\n\n  /**\n   * Update the component's state and fire the `onDayChange` event passing the\n   * day's modifiers to it.\n   *\n   * @param {Date} day - Will be used for changing the month\n   * @param {String} value - Input field value\n   * @private\n   */\n  updateState(day, value, callback) {\n    const { dayPickerProps, onDayChange } = this.props;\n    this.setState({ month: day, value, typedValue: '' }, () => {\n      if (callback) {\n        callback();\n      }\n      if (!onDayChange) {\n        return;\n      }\n      const modifiersObj = {\n        disabled: dayPickerProps.disabledDays,\n        selected: dayPickerProps.selectedDays,\n        ...dayPickerProps.modifiers,\n      };\n      const modifiers = getModifiersForDay(day, modifiersObj).reduce(\n        (obj, modifier) => ({\n          ...obj,\n          [modifier]: true,\n        }),\n        {}\n      );\n      onDayChange(day, modifiers, this);\n    });\n  }\n\n  /**\n   * Show the Day Picker overlay.\n   *\n   * @memberof DayPickerInput\n   */\n  showDayPicker() {\n    const { parseDate, format, dayPickerProps } = this.props;\n    const { value, showOverlay } = this.state;\n    if (showOverlay) {\n      return;\n    }\n    // Reset the current displayed month when showing the overlay\n    const month = value\n      ? parseDate(value, format, dayPickerProps.locale) // Use the month in the input field\n      : this.getInitialMonthFromProps(this.props); // Restore the month from the props\n    this.setState(\n      state => ({\n        showOverlay: true,\n        month: month || state.month,\n      }),\n      () => {\n        if (this.props.onDayPickerShow) this.props.onDayPickerShow();\n      }\n    );\n  }\n\n  /**\n   * Hide the Day Picker overlay\n   *\n   * @memberof DayPickerInput\n   */\n  hideDayPicker() {\n    if (this.state.showOverlay === false) {\n      return;\n    }\n    this.setState({ showOverlay: false }, () => {\n      if (this.props.onDayPickerHide) this.props.onDayPickerHide();\n    });\n  }\n\n  hideAfterDayClick() {\n    if (!this.props.hideOnDayClick) {\n      return;\n    }\n    this.hideTimeout = setTimeout(() => {\n      this.overlayHasFocus = false;\n      this.hideDayPicker();\n    }, HIDE_TIMEOUT);\n  }\n\n  handleInputClick(e) {\n    this.showDayPicker();\n    if (this.props.inputProps.onClick) {\n      e.persist();\n      this.props.inputProps.onClick(e);\n    }\n  }\n\n  handleInputFocus(e) {\n    this.showDayPicker();\n    // Set `overlayHasFocus` after a timeout so the overlay can be hidden when\n    // the input is blurred\n    this.inputFocusTimeout = setTimeout(() => {\n      this.overlayHasFocus = false;\n    }, 2);\n    if (this.props.inputProps.onFocus) {\n      e.persist();\n      this.props.inputProps.onFocus(e);\n    }\n  }\n\n  // When the input is blurred, the overlay should disappear. However the input\n  // is blurred also when the user interacts with the overlay (e.g. the overlay\n  // get the focus by clicking it). In these cases, the overlay should not be\n  // hidden. There are different approaches to avoid hiding the overlay when\n  // this happens, but the only cross-browser hack we’ve found is to set all\n  // these timeouts in code before changing `overlayHasFocus`.\n  handleInputBlur(e) {\n    this.inputBlurTimeout = setTimeout(() => {\n      if (!this.overlayHasFocus) {\n        this.hideDayPicker();\n      }\n    }, 1);\n    if (this.props.inputProps.onBlur) {\n      e.persist();\n      this.props.inputProps.onBlur(e);\n    }\n  }\n\n  handleOverlayFocus(e) {\n    e.preventDefault();\n    this.overlayHasFocus = true;\n    if (\n      !this.props.keepFocus ||\n      !this.input ||\n      typeof this.input.focus !== 'function'\n    ) {\n      return;\n    }\n    this.input.focus();\n  }\n\n  handleOverlayBlur() {\n    // We need to set a timeout otherwise IE11 will hide the overlay when\n    // focusing it\n    this.overlayBlurTimeout = setTimeout(() => {\n      this.overlayHasFocus = false;\n    }, 3);\n  }\n\n  handleInputChange(e) {\n    const {\n      dayPickerProps,\n      format,\n      inputProps,\n      onDayChange,\n      parseDate,\n    } = this.props;\n    if (inputProps.onChange) {\n      e.persist();\n      inputProps.onChange(e);\n    }\n    const { value } = e.target;\n    if (value.trim() === '') {\n      this.setState({ value, typedValue: '' });\n      if (onDayChange) onDayChange(undefined, {}, this);\n      return;\n    }\n    const day = parseDate(value, format, dayPickerProps.locale);\n    if (!day) {\n      // Day is invalid: we save the value in the typedValue state\n      this.setState({ value, typedValue: value });\n      if (onDayChange) onDayChange(undefined, {}, this);\n      return;\n    }\n    this.updateState(day, value);\n  }\n\n  handleInputKeyDown(e) {\n    if (e.keyCode === TAB) {\n      this.hideDayPicker();\n    } else {\n      this.showDayPicker();\n    }\n    if (this.props.inputProps.onKeyDown) {\n      e.persist();\n      this.props.inputProps.onKeyDown(e);\n    }\n  }\n\n  handleInputKeyUp(e) {\n    if (e.keyCode === ESC) {\n      this.hideDayPicker();\n    } else {\n      this.showDayPicker();\n    }\n    if (this.props.inputProps.onKeyUp) {\n      e.persist();\n      this.props.inputProps.onKeyUp(e);\n    }\n  }\n\n  handleMonthChange(month) {\n    this.setState({ month }, () => {\n      if (\n        this.props.dayPickerProps &&\n        this.props.dayPickerProps.onMonthChange\n      ) {\n        this.props.dayPickerProps.onMonthChange(month);\n      }\n    });\n  }\n\n  handleDayClick(day, modifiers, e) {\n    const {\n      clickUnselectsDay,\n      dayPickerProps,\n      onDayChange,\n      formatDate,\n      format,\n    } = this.props;\n    if (dayPickerProps.onDayClick) {\n      dayPickerProps.onDayClick(day, modifiers, e);\n    }\n\n    // Do nothing if the day is disabled\n    if (\n      modifiers.disabled ||\n      (dayPickerProps &&\n        dayPickerProps.classNames &&\n        modifiers[dayPickerProps.classNames.disabled])\n    ) {\n      return;\n    }\n\n    // If the clicked day is already selected, remove the clicked day\n    // from the selected days and empty the field value\n    if (modifiers.selected && clickUnselectsDay) {\n      let { selectedDays } = this.state;\n      if (Array.isArray(selectedDays)) {\n        selectedDays = selectedDays.slice(0);\n        const selectedDayIdx = selectedDays.indexOf(day);\n        selectedDays.splice(selectedDayIdx, 1);\n      } else if (selectedDays) {\n        selectedDays = null;\n      }\n\n      this.setState(\n        { value: '', typedValue: '', selectedDays },\n        this.hideAfterDayClick\n      );\n\n      if (onDayChange) {\n        onDayChange(undefined, modifiers, this);\n      }\n      return;\n    }\n\n    const value = formatDate(day, format, dayPickerProps.locale);\n    this.setState({ value, typedValue: '', month: day }, () => {\n      if (onDayChange) {\n        onDayChange(day, modifiers, this);\n      }\n      this.hideAfterDayClick();\n    });\n  }\n\n  renderOverlay() {\n    const {\n      classNames,\n      dayPickerProps,\n      parseDate,\n      formatDate,\n      format,\n    } = this.props;\n    const { selectedDays, value } = this.state;\n    let selectedDay;\n    if (!selectedDays && value) {\n      const day = parseDate(value, format, dayPickerProps.locale);\n      if (day) {\n        selectedDay = day;\n      }\n    } else if (selectedDays) {\n      selectedDay = selectedDays;\n    }\n    let onTodayButtonClick;\n    if (dayPickerProps.todayButton) {\n      // Set the current day when clicking the today button\n      onTodayButtonClick = () =>\n        this.updateState(\n          new Date(),\n          formatDate(new Date(), format, dayPickerProps.locale),\n          this.hideAfterDayClick\n        );\n    }\n    const Overlay = this.props.overlayComponent;\n    return (\n      <Overlay\n        classNames={classNames}\n        month={this.state.month}\n        selectedDay={selectedDay}\n        input={this.input}\n        tabIndex={0} // tabIndex is necessary to catch focus/blur events on Safari\n        onFocus={this.handleOverlayFocus}\n        onBlur={this.handleOverlayBlur}\n      >\n        <DayPicker\n          ref={el => (this.daypicker = el)}\n          onTodayButtonClick={onTodayButtonClick}\n          {...dayPickerProps}\n          month={this.state.month}\n          selectedDays={selectedDay}\n          onDayClick={this.handleDayClick}\n          onMonthChange={this.handleMonthChange}\n        />\n      </Overlay>\n    );\n  }\n\n  render() {\n    const Input = this.props.component;\n    const { inputProps } = this.props;\n    return (\n      <div className={this.props.classNames.container} style={this.props.style}>\n        <Input\n          ref={el => (this.input = el)}\n          placeholder={this.props.placeholder}\n          {...inputProps}\n          value={this.state.value || this.state.typedValue}\n          onChange={this.handleInputChange}\n          onFocus={this.handleInputFocus}\n          onBlur={this.handleInputBlur}\n          onKeyDown={this.handleInputKeyDown}\n          onKeyUp={this.handleInputKeyUp}\n          onClick={!inputProps.disabled ? this.handleInputClick : undefined}\n        />\n        {this.state.showOverlay && this.renderOverlay()}\n      </div>\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/DayPickerInput.js","module.exports = require('../build/addons/MomentLocaleUtils');\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"Chart\", {\n  enumerable: true,\n  get: function get() {\n    return _chart[\"default\"];\n  }\n});\nexports.defaults = exports.Scatter = exports.Bubble = exports.Polar = exports.Radar = exports.HorizontalBar = exports.Bar = exports.Line = exports.Pie = exports.Doughnut = exports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _chart = _interopRequireDefault(require(\"chart.js\"));\n\nvar _isEqual = _interopRequireDefault(require(\"lodash/isEqual\"));\n\nvar _keyBy = _interopRequireDefault(require(\"lodash/keyBy\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar NODE_ENV = typeof process !== 'undefined' && process.env && process.env.NODE_ENV;\n\nvar ChartComponent = /*#__PURE__*/function (_React$Component) {\n  _inherits(ChartComponent, _React$Component);\n\n  var _super = _createSuper(ChartComponent);\n\n  function ChartComponent() {\n    var _this;\n\n    _classCallCheck(this, ChartComponent);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleOnClick\", function (event) {\n      var instance = _this.chartInstance;\n      var _this$props = _this.props,\n          getDatasetAtEvent = _this$props.getDatasetAtEvent,\n          getElementAtEvent = _this$props.getElementAtEvent,\n          getElementsAtEvent = _this$props.getElementsAtEvent,\n          onElementsClick = _this$props.onElementsClick;\n      getDatasetAtEvent && getDatasetAtEvent(instance.getDatasetAtEvent(event), event);\n      getElementAtEvent && getElementAtEvent(instance.getElementAtEvent(event), event);\n      getElementsAtEvent && getElementsAtEvent(instance.getElementsAtEvent(event), event);\n      onElementsClick && onElementsClick(instance.getElementsAtEvent(event), event); // Backward compatibility\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (element) {\n      _this.element = element;\n    });\n\n    _this.chartInstance = undefined;\n    return _this;\n  }\n\n  _createClass(ChartComponent, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.renderChart();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (this.props.redraw) {\n        this.destroyChart();\n        this.renderChart();\n        return;\n      }\n\n      this.updateChart();\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var _this$props2 = this.props,\n          redraw = _this$props2.redraw,\n          type = _this$props2.type,\n          options = _this$props2.options,\n          plugins = _this$props2.plugins,\n          legend = _this$props2.legend,\n          height = _this$props2.height,\n          width = _this$props2.width;\n\n      if (nextProps.redraw === true) {\n        return true;\n      }\n\n      if (height !== nextProps.height || width !== nextProps.width) {\n        return true;\n      }\n\n      if (type !== nextProps.type) {\n        return true;\n      }\n\n      if (!(0, _isEqual[\"default\"])(legend, nextProps.legend)) {\n        return true;\n      }\n\n      if (!(0, _isEqual[\"default\"])(options, nextProps.options)) {\n        return true;\n      }\n\n      var nextData = this.transformDataProp(nextProps);\n\n      if (!(0, _isEqual[\"default\"])(this.shadowDataProp, nextData)) {\n        return true;\n      }\n\n      return !(0, _isEqual[\"default\"])(plugins, nextProps.plugins);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.destroyChart();\n    }\n  }, {\n    key: \"transformDataProp\",\n    value: function transformDataProp(props) {\n      var data = props.data;\n\n      if (typeof data == 'function') {\n        var node = this.element;\n        return data(node);\n      } else {\n        return data;\n      }\n    } // Chart.js directly mutates the data.dataset objects by adding _meta proprerty\n    // this makes impossible to compare the current and next data changes\n    // therefore we memoize the data prop while sending a fake to Chart.js for mutation.\n    // see https://github.com/chartjs/Chart.js/blob/master/src/core/core.controller.js#L615-L617\n\n  }, {\n    key: \"memoizeDataProps\",\n    value: function memoizeDataProps() {\n      if (!this.props.data) {\n        return;\n      }\n\n      var data = this.transformDataProp(this.props);\n      this.shadowDataProp = _objectSpread(_objectSpread({}, data), {}, {\n        datasets: data.datasets && data.datasets.map(function (set) {\n          return _objectSpread({}, set);\n        })\n      });\n      this.saveCurrentDatasets(); // to remove the dataset metadata from this chart when the chart is destroyed\n\n      return data;\n    }\n  }, {\n    key: \"checkDatasets\",\n    value: function checkDatasets(datasets) {\n      var isDev = NODE_ENV !== 'production' && NODE_ENV !== 'prod';\n      var usingCustomKeyProvider = this.props.datasetKeyProvider !== ChartComponent.getLabelAsKey;\n      var multipleDatasets = datasets.length > 1;\n\n      if (isDev && multipleDatasets && !usingCustomKeyProvider) {\n        var shouldWarn = false;\n        datasets.forEach(function (dataset) {\n          if (!dataset.label) {\n            shouldWarn = true;\n          }\n        });\n\n        if (shouldWarn) {\n          console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the \"label\" property on each dataset is used. Alternatively, you may provide a \"datasetKeyProvider\" as a prop that returns a unique key.');\n        }\n      }\n    }\n  }, {\n    key: \"getCurrentDatasets\",\n    value: function getCurrentDatasets() {\n      return this.chartInstance && this.chartInstance.config.data && this.chartInstance.config.data.datasets || [];\n    }\n  }, {\n    key: \"saveCurrentDatasets\",\n    value: function saveCurrentDatasets() {\n      var _this2 = this;\n\n      this.datasets = this.datasets || {};\n      var currentDatasets = this.getCurrentDatasets();\n      currentDatasets.forEach(function (d) {\n        _this2.datasets[_this2.props.datasetKeyProvider(d)] = d;\n      });\n    }\n  }, {\n    key: \"updateChart\",\n    value: function updateChart() {\n      var _this3 = this;\n\n      var options = this.props.options;\n      var data = this.memoizeDataProps(this.props);\n      if (!this.chartInstance) return;\n\n      if (options) {\n        this.chartInstance.options = _chart[\"default\"].helpers.configMerge(this.chartInstance.options, options);\n      } // Pipe datasets to chart instance datasets enabling\n      // seamless transitions\n\n\n      var currentDatasets = this.getCurrentDatasets();\n      var nextDatasets = data.datasets || [];\n      this.checkDatasets(currentDatasets);\n      var currentDatasetsIndexed = (0, _keyBy[\"default\"])(currentDatasets, this.props.datasetKeyProvider); // We can safely replace the dataset array, as long as we retain the _meta property\n      // on each dataset.\n\n      this.chartInstance.config.data.datasets = nextDatasets.map(function (next) {\n        var current = currentDatasetsIndexed[_this3.props.datasetKeyProvider(next)];\n\n        if (current && current.type === next.type && next.data) {\n          // Be robust to no data. Relevant for other update mechanisms as in chartjs-plugin-streaming.\n          // The data array must be edited in place. As chart.js adds listeners to it.\n          current.data.splice(next.data.length);\n          next.data.forEach(function (point, pid) {\n            current.data[pid] = next.data[pid];\n          });\n\n          var _data = next.data,\n              otherProps = _objectWithoutProperties(next, [\"data\"]); // Merge properties. Notice a weakness here. If a property is removed\n          // from next, it will be retained by current and never disappears.\n          // Workaround is to set value to null or undefined in next.\n\n\n          return _objectSpread(_objectSpread({}, current), otherProps);\n        } else {\n          return next;\n        }\n      });\n\n      var datasets = data.datasets,\n          rest = _objectWithoutProperties(data, [\"datasets\"]);\n\n      this.chartInstance.config.data = _objectSpread(_objectSpread({}, this.chartInstance.config.data), rest);\n      this.chartInstance.update();\n    }\n  }, {\n    key: \"renderChart\",\n    value: function renderChart() {\n      var _this$props3 = this.props,\n          options = _this$props3.options,\n          legend = _this$props3.legend,\n          type = _this$props3.type,\n          plugins = _this$props3.plugins;\n      var node = this.element;\n      var data = this.memoizeDataProps();\n\n      if (typeof legend !== 'undefined' && !(0, _isEqual[\"default\"])(ChartComponent.defaultProps.legend, legend)) {\n        options.legend = legend;\n      }\n\n      this.chartInstance = new _chart[\"default\"](node, {\n        type: type,\n        data: data,\n        options: options,\n        plugins: plugins\n      });\n    }\n  }, {\n    key: \"destroyChart\",\n    value: function destroyChart() {\n      if (!this.chartInstance) {\n        return;\n      } // Put all of the datasets that have existed in the chart back on the chart\n      // so that the metadata associated with this chart get destroyed.\n      // This allows the datasets to be used in another chart. This can happen,\n      // for example, in a tabbed UI where the chart gets created each time the\n      // tab gets switched to the chart and uses the same data).\n\n\n      this.saveCurrentDatasets();\n      var datasets = Object.values(this.datasets);\n      this.chartInstance.config.data.datasets = datasets;\n      this.chartInstance.destroy();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n          height = _this$props4.height,\n          width = _this$props4.width,\n          id = _this$props4.id;\n      return /*#__PURE__*/_react[\"default\"].createElement(\"canvas\", {\n        ref: this.ref,\n        height: height,\n        width: width,\n        id: id,\n        onClick: this.handleOnClick\n      });\n    }\n  }]);\n\n  return ChartComponent;\n}(_react[\"default\"].Component);\n\n_defineProperty(ChartComponent, \"getLabelAsKey\", function (d) {\n  return d.label;\n});\n\n_defineProperty(ChartComponent, \"propTypes\", {\n  data: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]).isRequired,\n  getDatasetAtEvent: _propTypes[\"default\"].func,\n  getElementAtEvent: _propTypes[\"default\"].func,\n  getElementsAtEvent: _propTypes[\"default\"].func,\n  height: _propTypes[\"default\"].number,\n  legend: _propTypes[\"default\"].object,\n  onElementsClick: _propTypes[\"default\"].func,\n  options: _propTypes[\"default\"].object,\n  plugins: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n  redraw: _propTypes[\"default\"].bool,\n  type: function type(props, propName, componentName) {\n    if (!_chart[\"default\"].controllers[props[propName]]) {\n      return new Error('Invalid chart type `' + props[propName] + '` supplied to' + ' `' + componentName + '`.');\n    }\n  },\n  width: _propTypes[\"default\"].number,\n  datasetKeyProvider: _propTypes[\"default\"].func\n});\n\n_defineProperty(ChartComponent, \"defaultProps\", {\n  legend: {\n    display: true,\n    position: 'bottom'\n  },\n  type: 'doughnut',\n  height: 150,\n  width: 300,\n  redraw: false,\n  options: {},\n  datasetKeyProvider: ChartComponent.getLabelAsKey\n});\n\nvar _default = ChartComponent;\nexports[\"default\"] = _default;\n\nvar Doughnut = /*#__PURE__*/function (_React$Component2) {\n  _inherits(Doughnut, _React$Component2);\n\n  var _super2 = _createSuper(Doughnut);\n\n  function Doughnut() {\n    _classCallCheck(this, Doughnut);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(Doughnut, [{\n    key: \"render\",\n    value: function render() {\n      var _this4 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref) {\n          return _this4.chartInstance = _ref && _ref.chartInstance;\n        },\n        type: \"doughnut\"\n      }));\n    }\n  }]);\n\n  return Doughnut;\n}(_react[\"default\"].Component);\n\nexports.Doughnut = Doughnut;\n\nvar Pie = /*#__PURE__*/function (_React$Component3) {\n  _inherits(Pie, _React$Component3);\n\n  var _super3 = _createSuper(Pie);\n\n  function Pie() {\n    _classCallCheck(this, Pie);\n\n    return _super3.apply(this, arguments);\n  }\n\n  _createClass(Pie, [{\n    key: \"render\",\n    value: function render() {\n      var _this5 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref2) {\n          return _this5.chartInstance = _ref2 && _ref2.chartInstance;\n        },\n        type: \"pie\"\n      }));\n    }\n  }]);\n\n  return Pie;\n}(_react[\"default\"].Component);\n\nexports.Pie = Pie;\n\nvar Line = /*#__PURE__*/function (_React$Component4) {\n  _inherits(Line, _React$Component4);\n\n  var _super4 = _createSuper(Line);\n\n  function Line() {\n    _classCallCheck(this, Line);\n\n    return _super4.apply(this, arguments);\n  }\n\n  _createClass(Line, [{\n    key: \"render\",\n    value: function render() {\n      var _this6 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref3) {\n          return _this6.chartInstance = _ref3 && _ref3.chartInstance;\n        },\n        type: \"line\"\n      }));\n    }\n  }]);\n\n  return Line;\n}(_react[\"default\"].Component);\n\nexports.Line = Line;\n\nvar Bar = /*#__PURE__*/function (_React$Component5) {\n  _inherits(Bar, _React$Component5);\n\n  var _super5 = _createSuper(Bar);\n\n  function Bar() {\n    _classCallCheck(this, Bar);\n\n    return _super5.apply(this, arguments);\n  }\n\n  _createClass(Bar, [{\n    key: \"render\",\n    value: function render() {\n      var _this7 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref4) {\n          return _this7.chartInstance = _ref4 && _ref4.chartInstance;\n        },\n        type: \"bar\"\n      }));\n    }\n  }]);\n\n  return Bar;\n}(_react[\"default\"].Component);\n\nexports.Bar = Bar;\n\nvar HorizontalBar = /*#__PURE__*/function (_React$Component6) {\n  _inherits(HorizontalBar, _React$Component6);\n\n  var _super6 = _createSuper(HorizontalBar);\n\n  function HorizontalBar() {\n    _classCallCheck(this, HorizontalBar);\n\n    return _super6.apply(this, arguments);\n  }\n\n  _createClass(HorizontalBar, [{\n    key: \"render\",\n    value: function render() {\n      var _this8 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref5) {\n          return _this8.chartInstance = _ref5 && _ref5.chartInstance;\n        },\n        type: \"horizontalBar\"\n      }));\n    }\n  }]);\n\n  return HorizontalBar;\n}(_react[\"default\"].Component);\n\nexports.HorizontalBar = HorizontalBar;\n\nvar Radar = /*#__PURE__*/function (_React$Component7) {\n  _inherits(Radar, _React$Component7);\n\n  var _super7 = _createSuper(Radar);\n\n  function Radar() {\n    _classCallCheck(this, Radar);\n\n    return _super7.apply(this, arguments);\n  }\n\n  _createClass(Radar, [{\n    key: \"render\",\n    value: function render() {\n      var _this9 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref6) {\n          return _this9.chartInstance = _ref6 && _ref6.chartInstance;\n        },\n        type: \"radar\"\n      }));\n    }\n  }]);\n\n  return Radar;\n}(_react[\"default\"].Component);\n\nexports.Radar = Radar;\n\nvar Polar = /*#__PURE__*/function (_React$Component8) {\n  _inherits(Polar, _React$Component8);\n\n  var _super8 = _createSuper(Polar);\n\n  function Polar() {\n    _classCallCheck(this, Polar);\n\n    return _super8.apply(this, arguments);\n  }\n\n  _createClass(Polar, [{\n    key: \"render\",\n    value: function render() {\n      var _this10 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref7) {\n          return _this10.chartInstance = _ref7 && _ref7.chartInstance;\n        },\n        type: \"polarArea\"\n      }));\n    }\n  }]);\n\n  return Polar;\n}(_react[\"default\"].Component);\n\nexports.Polar = Polar;\n\nvar Bubble = /*#__PURE__*/function (_React$Component9) {\n  _inherits(Bubble, _React$Component9);\n\n  var _super9 = _createSuper(Bubble);\n\n  function Bubble() {\n    _classCallCheck(this, Bubble);\n\n    return _super9.apply(this, arguments);\n  }\n\n  _createClass(Bubble, [{\n    key: \"render\",\n    value: function render() {\n      var _this11 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref8) {\n          return _this11.chartInstance = _ref8 && _ref8.chartInstance;\n        },\n        type: \"bubble\"\n      }));\n    }\n  }]);\n\n  return Bubble;\n}(_react[\"default\"].Component);\n\nexports.Bubble = Bubble;\n\nvar Scatter = /*#__PURE__*/function (_React$Component10) {\n  _inherits(Scatter, _React$Component10);\n\n  var _super10 = _createSuper(Scatter);\n\n  function Scatter() {\n    _classCallCheck(this, Scatter);\n\n    return _super10.apply(this, arguments);\n  }\n\n  _createClass(Scatter, [{\n    key: \"render\",\n    value: function render() {\n      var _this12 = this;\n\n      return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n        ref: function ref(_ref9) {\n          return _this12.chartInstance = _ref9 && _ref9.chartInstance;\n        },\n        type: \"scatter\"\n      }));\n    }\n  }]);\n\n  return Scatter;\n}(_react[\"default\"].Component);\n\nexports.Scatter = Scatter;\nvar defaults = _chart[\"default\"].defaults;\nexports.defaults = defaults;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _recaptcha = require(\"./recaptcha\");\n\nvar _recaptcha2 = _interopRequireDefault(_recaptcha);\n\nvar _reactAsyncScript = require(\"react-async-script\");\n\nvar _reactAsyncScript2 = _interopRequireDefault(_reactAsyncScript);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar callbackName = \"onloadcallback\";\nvar lang = typeof window !== \"undefined\" && window.recaptchaOptions && window.recaptchaOptions.lang ? \"&hl=\" + window.recaptchaOptions.lang : \"\";\nvar URL = \"https://www.google.com/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\" + lang;\nvar globalName = \"grecaptcha\";\n\nexports.default = (0, _reactAsyncScript2.default)(_recaptcha2.default, URL, {\n  callbackName: callbackName,\n  globalName: globalName,\n  exposeFuncs: [\"getValue\", \"getWidgetId\", \"reset\", \"execute\"]\n});","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component } from 'react';\nimport { oneOfType, func, shape, any, number, object, bool, string } from 'prop-types';\n\nvar isIE =  !!document.documentElement.currentStyle ;\nvar HIDDEN_TEXTAREA_STYLE = {\n  'min-height': '0',\n  'max-height': 'none',\n  height: '0',\n  visibility: 'hidden',\n  overflow: 'hidden',\n  position: 'absolute',\n  'z-index': '-1000',\n  top: '0',\n  right: '0'\n};\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'font-family', 'font-weight', 'font-size', 'font-style', 'tab-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width', 'box-sizing'];\nvar computedStyleCache = {};\nvar hiddenTextarea =  document.createElement('textarea');\n\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n  Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n    node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n  });\n};\n\n{\n  hiddenTextarea.setAttribute('tab-index', '-1');\n  hiddenTextarea.setAttribute('aria-hidden', 'true');\n  forceHiddenStyles(hiddenTextarea);\n}\n\nfunction calculateNodeHeight(uiTextNode, uid, useCache, minRows, maxRows) {\n  if (useCache === void 0) {\n    useCache = false;\n  }\n\n  if (minRows === void 0) {\n    minRows = null;\n  }\n\n  if (maxRows === void 0) {\n    maxRows = null;\n  }\n\n  if (hiddenTextarea.parentNode === null) {\n    document.body.appendChild(hiddenTextarea);\n  } // Copy all CSS properties that have an impact on the height of the content in\n  // the textbox\n\n\n  var nodeStyling = calculateNodeStyling(uiTextNode, uid, useCache);\n\n  if (nodeStyling === null) {\n    return null;\n  }\n\n  var paddingSize = nodeStyling.paddingSize,\n      borderSize = nodeStyling.borderSize,\n      boxSizing = nodeStyling.boxSizing,\n      sizingStyle = nodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise\n  // text-lines will not calculated properly as the shadow will technically be\n  // narrower for content\n\n  Object.keys(sizingStyle).forEach(function (key) {\n    hiddenTextarea.style[key] = sizingStyle[key];\n  });\n  forceHiddenStyles(hiddenTextarea);\n  hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || 'x';\n  var minHeight = -Infinity;\n  var maxHeight = Infinity;\n  var height = hiddenTextarea.scrollHeight;\n\n  if (boxSizing === 'border-box') {\n    // border-box: add border, since height = content + padding + border\n    height = height + borderSize;\n  } else if (boxSizing === 'content-box') {\n    // remove padding, since height = content\n    height = height - paddingSize;\n  } // measure height of a textarea with a single row\n\n\n  hiddenTextarea.value = 'x';\n  var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize; // Stores the value's rows count rendered in `hiddenTextarea`,\n  // regardless if `maxRows` or `minRows` props are passed\n\n  var valueRowCount = Math.floor(height / singleRowHeight);\n\n  if (minRows !== null) {\n    minHeight = singleRowHeight * minRows;\n\n    if (boxSizing === 'border-box') {\n      minHeight = minHeight + paddingSize + borderSize;\n    }\n\n    height = Math.max(minHeight, height);\n  }\n\n  if (maxRows !== null) {\n    maxHeight = singleRowHeight * maxRows;\n\n    if (boxSizing === 'border-box') {\n      maxHeight = maxHeight + paddingSize + borderSize;\n    }\n\n    height = Math.min(maxHeight, height);\n  }\n\n  var rowCount = Math.floor(height / singleRowHeight);\n  return {\n    height: height,\n    minHeight: minHeight,\n    maxHeight: maxHeight,\n    rowCount: rowCount,\n    valueRowCount: valueRowCount\n  };\n}\n\nfunction calculateNodeStyling(node, uid, useCache) {\n  if (useCache === void 0) {\n    useCache = false;\n  }\n\n  if (useCache && computedStyleCache[uid]) {\n    return computedStyleCache[uid];\n  }\n\n  var style = window.getComputedStyle(node);\n\n  if (style === null) {\n    return null;\n  }\n\n  var sizingStyle = SIZING_STYLE.reduce(function (obj, name) {\n    obj[name] = style.getPropertyValue(name);\n    return obj;\n  }, {});\n  var boxSizing = sizingStyle['box-sizing']; // probably node is detached from DOM, can't read computed dimensions\n\n  if (boxSizing === '') {\n    return null;\n  } // IE (Edge has already correct behaviour) returns content width as computed width\n  // so we need to add manually padding and border widths\n\n\n  if (isIE && boxSizing === 'border-box') {\n    sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(style['border-right-width']) + parseFloat(style['border-left-width']) + parseFloat(style['padding-right']) + parseFloat(style['padding-left']) + 'px';\n  }\n\n  var paddingSize = parseFloat(sizingStyle['padding-bottom']) + parseFloat(sizingStyle['padding-top']);\n  var borderSize = parseFloat(sizingStyle['border-bottom-width']) + parseFloat(sizingStyle['border-top-width']);\n  var nodeInfo = {\n    sizingStyle: sizingStyle,\n    paddingSize: paddingSize,\n    borderSize: borderSize,\n    boxSizing: boxSizing\n  };\n\n  if (useCache) {\n    computedStyleCache[uid] = nodeInfo;\n  }\n\n  return nodeInfo;\n}\n\nvar purgeCache = function purgeCache(uid) {\n  delete computedStyleCache[uid];\n};\n\nvar noop = function noop() {};\n\nvar uid = 0;\n\nvar TextareaAutosize =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TextareaAutosize, _React$Component);\n\n  function TextareaAutosize(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this;\n\n    _this._onRef = function (node) {\n      _this._ref = node;\n      var inputRef = _this.props.inputRef;\n\n      if (typeof inputRef === 'function') {\n        inputRef(node);\n        return;\n      }\n\n      inputRef.current = node;\n    };\n\n    _this._onChange = function (event) {\n      if (!_this._controlled) {\n        _this._resizeComponent();\n      }\n\n      _this.props.onChange(event, _assertThisInitialized(_this));\n    };\n\n    _this._resizeComponent = function (callback) {\n      if (callback === void 0) {\n        callback = noop;\n      }\n\n      var nodeHeight = calculateNodeHeight(_this._ref, _this._uid, _this.props.useCacheForDOMMeasurements, _this.props.minRows, _this.props.maxRows);\n\n      if (nodeHeight === null) {\n        callback();\n        return;\n      }\n\n      var height = nodeHeight.height,\n          minHeight = nodeHeight.minHeight,\n          maxHeight = nodeHeight.maxHeight,\n          rowCount = nodeHeight.rowCount,\n          valueRowCount = nodeHeight.valueRowCount;\n      _this.rowCount = rowCount;\n      _this.valueRowCount = valueRowCount;\n\n      if (_this.state.height !== height || _this.state.minHeight !== minHeight || _this.state.maxHeight !== maxHeight) {\n        _this.setState({\n          height: height,\n          minHeight: minHeight,\n          maxHeight: maxHeight\n        }, callback);\n\n        return;\n      }\n\n      callback();\n    };\n\n    _this.state = {\n      height: props.style && props.style.height || 0,\n      minHeight: -Infinity,\n      maxHeight: Infinity\n    };\n    _this._uid = uid++;\n    _this._controlled = props.value !== undefined;\n    _this._resizeLock = false;\n    return _this;\n  }\n\n  var _proto = TextareaAutosize.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        _inputRef = _this$props.inputRef,\n        _maxRows = _this$props.maxRows,\n        _minRows = _this$props.minRows,\n        _onHeightChange = _this$props.onHeightChange,\n        _useCacheForDOMMeasurements = _this$props.useCacheForDOMMeasurements,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"inputRef\", \"maxRows\", \"minRows\", \"onHeightChange\", \"useCacheForDOMMeasurements\"]);\n\n    props.style = _extends({}, props.style, {\n      height: this.state.height\n    });\n    var maxHeight = Math.max(props.style.maxHeight || Infinity, this.state.maxHeight);\n\n    if (maxHeight < this.state.height) {\n      props.style.overflow = 'hidden';\n    }\n\n    return createElement(\"textarea\", _extends({}, props, {\n      onChange: this._onChange,\n      ref: this._onRef\n    }));\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    var _this2 = this;\n\n    this._resizeComponent(); // Working around Firefox bug which runs resize listeners even when other JS is running at the same moment\n    // causing competing rerenders (due to setState in the listener) in React.\n    // More can be found here - facebook/react#6324\n\n\n    this._resizeListener = function () {\n      if (_this2._resizeLock) {\n        return;\n      }\n\n      _this2._resizeLock = true;\n\n      _this2._resizeComponent(function () {\n        _this2._resizeLock = false;\n      });\n    };\n\n    window.addEventListener('resize', this._resizeListener);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    if (prevProps !== this.props) {\n      this._resizeComponent();\n    }\n\n    if (this.state.height !== prevState.height) {\n      this.props.onHeightChange(this.state.height, this);\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    window.removeEventListener('resize', this._resizeListener);\n    purgeCache(this._uid);\n  };\n\n  return TextareaAutosize;\n}(Component);\n\nTextareaAutosize.defaultProps = {\n  inputRef: noop,\n  onChange: noop,\n  onHeightChange: noop,\n  useCacheForDOMMeasurements: false\n};\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes = {\n  inputRef: oneOfType([func, shape({\n    current: any\n  })]),\n  maxRows: number,\n  minRows: number,\n  onChange: func,\n  onHeightChange: func,\n  style: object,\n  useCacheForDOMMeasurements: bool,\n  value: string\n} : void 0;\n\nexport default TextareaAutosize;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n  var l = str.length,\n      h = l ^ l,\n      i = 0,\n      k;\n\n  while (l >= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    k ^= k >>> 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n    l -= 4;\n    ++i;\n  }\n\n  switch (l) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  }\n\n  h ^= h >>> 13;\n  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  h ^= h >>> 15;\n  return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e, m).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e, m).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        switch (d.constructor) {\n          case Array:\n            for (var c = 0, e = d.length; c < e; ++c) {\n              T(d[c]);\n            }\n\n            break;\n\n          case Function:\n            S[A++] = d;\n            break;\n\n          case Boolean:\n            Y = !!d | 0;\n        }\n\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import memoize from '@emotion/memoize';\nimport unitless from '@emotion/unitless';\nimport hashString from '@emotion/hash';\nimport Stylis from '@emotion/stylis';\nimport stylisRuleSheet from 'stylis-rule-sheet';\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar processStyleName = memoize(function (styleName) {\n  return styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\nvar processStyleValue = function processStyleValue(key, value) {\n  if (value == null || typeof value === 'boolean') {\n    return '';\n  }\n\n  if (unitless[key] !== 1 && key.charCodeAt(1) !== 45 && // custom properties\n  !isNaN(value) && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    return oldProcessStyleValue(key, value);\n  };\n}\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'function':\n        if (process.env.NODE_ENV !== 'production') {\n          console.error('Passing functions to cx is deprecated and will be removed in the next major version of Emotion.\\n' + 'Please call the function before passing it to cx.');\n        }\n\n        toAdd = classnames([arg()]);\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\nvar isBrowser = typeof document !== 'undefined';\n\n/*\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n- 'polyfills' on server side\n\n// usage\n\nimport StyleSheet from 'glamor/lib/sheet'\nlet styleSheet = new StyleSheet()\n\nstyleSheet.inject()\n- 'injects' the stylesheet into the page (or into memory if on server)\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction makeStyleTag(opts) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', opts.key || '');\n\n  if (opts.nonce !== undefined) {\n    tag.setAttribute('nonce', opts.nonce);\n  }\n\n  tag.appendChild(document.createTextNode('')) // $FlowFixMe\n  ;\n  (opts.container !== undefined ? opts.container : document.head).appendChild(tag);\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = process.env.NODE_ENV === 'production'; // the big drawback here is that the css won't be editable in devtools\n\n    this.tags = [];\n    this.ctr = 0;\n    this.opts = options;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.inject = function inject() {\n    if (this.injected) {\n      throw new Error('already injected!');\n    }\n\n    this.tags[0] = makeStyleTag(this.opts);\n    this.injected = true;\n  };\n\n  _proto.speedy = function speedy(bool) {\n    if (this.ctr !== 0) {\n      // cannot change speedy mode after inserting any rule to sheet. Either call speedy(${bool}) earlier in your app, or call flush() before speedy(${bool})\n      throw new Error(\"cannot change speedy now\");\n    }\n\n    this.isSpeedy = !!bool;\n  };\n\n  _proto.insert = function insert(rule, sourceMap) {\n    // this is the ultrafast version, works across browsers\n    if (this.isSpeedy) {\n      var tag = this.tags[this.tags.length - 1];\n      var sheet = sheetForTag(tag);\n\n      try {\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn('illegal rule', rule); // eslint-disable-line no-console\n        }\n      }\n    } else {\n      var _tag = makeStyleTag(this.opts);\n\n      this.tags.push(_tag);\n\n      _tag.appendChild(document.createTextNode(rule + (sourceMap || '')));\n    }\n\n    this.ctr++;\n\n    if (this.ctr % 65000 === 0) {\n      this.tags.push(makeStyleTag(this.opts));\n    }\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0; // todo - look for remnants in document.styleSheets\n\n    this.injected = false;\n  };\n\n  return StyleSheet;\n}();\n\nfunction createEmotion(context, options) {\n  if (context.__SECRET_EMOTION__ !== undefined) {\n    return context.__SECRET_EMOTION__;\n  }\n\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var current;\n\n  function insertRule(rule) {\n    current += rule;\n\n    if (isBrowser) {\n      sheet.insert(rule, currentSourceMap);\n    }\n  }\n\n  var insertionPlugin = stylisRuleSheet(insertRule);\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var caches = {\n    registered: {},\n    inserted: {},\n    nonce: options.nonce,\n    key: key\n  };\n  var sheet = new StyleSheet(options);\n\n  if (isBrowser) {\n    // 🚀\n    sheet.inject();\n  }\n\n  var stylis = new Stylis(stylisOptions);\n  stylis.use(options.stylisPlugins)(insertionPlugin);\n  var currentSourceMap = '';\n\n  function handleInterpolation(interpolation, couldBeSelectorInterpolation) {\n    if (interpolation == null) {\n      return '';\n    }\n\n    switch (typeof interpolation) {\n      case 'boolean':\n        return '';\n\n      case 'function':\n        if (interpolation.__emotion_styles !== undefined) {\n          var selector = interpolation.toString();\n\n          if (selector === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n            throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n          }\n\n          return selector;\n        }\n\n        if (this === undefined && process.env.NODE_ENV !== 'production') {\n          console.error('Interpolating functions in css calls is deprecated and will be removed in the next major version of Emotion.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        return handleInterpolation.call(this, this === undefined ? interpolation() : // $FlowFixMe\n        interpolation(this.mergedProps, this.context), couldBeSelectorInterpolation);\n\n      case 'object':\n        return createStringFromObject.call(this, interpolation);\n\n      default:\n        var cached = caches.registered[interpolation];\n        return couldBeSelectorInterpolation === false && cached !== undefined ? cached : interpolation;\n    }\n  }\n\n  var objectToStringCache = new WeakMap();\n\n  function createStringFromObject(obj) {\n    if (objectToStringCache.has(obj)) {\n      // $FlowFixMe\n      return objectToStringCache.get(obj);\n    }\n\n    var string = '';\n\n    if (Array.isArray(obj)) {\n      obj.forEach(function (interpolation) {\n        string += handleInterpolation.call(this, interpolation, false);\n      }, this);\n    } else {\n      Object.keys(obj).forEach(function (key) {\n        if (typeof obj[key] !== 'object') {\n          if (caches.registered[obj[key]] !== undefined) {\n            string += key + \"{\" + caches.registered[obj[key]] + \"}\";\n          } else {\n            string += processStyleName(key) + \":\" + processStyleValue(key, obj[key]) + \";\";\n          }\n        } else {\n          if (key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n            throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n          }\n\n          if (Array.isArray(obj[key]) && typeof obj[key][0] === 'string' && caches.registered[obj[key][0]] === undefined) {\n            obj[key].forEach(function (value) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value) + \";\";\n            });\n          } else {\n            string += key + \"{\" + handleInterpolation.call(this, obj[key], false) + \"}\";\n          }\n        }\n      }, this);\n    }\n\n    objectToStringCache.set(obj, string);\n    return string;\n  }\n\n  var name;\n  var stylesWithLabel;\n  var labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\n\n  var createClassName = function createClassName(styles, identifierName) {\n    return hashString(styles + identifierName) + identifierName;\n  };\n\n  if (process.env.NODE_ENV !== 'production') {\n    var oldCreateClassName = createClassName;\n    var sourceMappingUrlPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n\n    createClassName = function createClassName(styles, identifierName) {\n      return oldCreateClassName(styles.replace(sourceMappingUrlPattern, function (sourceMap) {\n        currentSourceMap = sourceMap;\n        return '';\n      }), identifierName);\n    };\n  }\n\n  var createStyles = function createStyles(strings) {\n    var stringMode = true;\n    var styles = '';\n    var identifierName = '';\n\n    if (strings == null || strings.raw === undefined) {\n      stringMode = false;\n      styles += handleInterpolation.call(this, strings, false);\n    } else {\n      styles += strings[0];\n    }\n\n    for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      interpolations[_key - 1] = arguments[_key];\n    }\n\n    interpolations.forEach(function (interpolation, i) {\n      styles += handleInterpolation.call(this, interpolation, styles.charCodeAt(styles.length - 1) === 46 // .\n      );\n\n      if (stringMode === true && strings[i + 1] !== undefined) {\n        styles += strings[i + 1];\n      }\n    }, this);\n    stylesWithLabel = styles;\n    styles = styles.replace(labelPattern, function (match, p1) {\n      identifierName += \"-\" + p1;\n      return '';\n    });\n    name = createClassName(styles, identifierName);\n    return styles;\n  };\n\n  if (process.env.NODE_ENV !== 'production') {\n    var oldStylis = stylis;\n\n    stylis = function stylis(selector, styles) {\n      oldStylis(selector, styles);\n      currentSourceMap = '';\n    };\n  }\n\n  function insert(scope, styles) {\n    if (caches.inserted[name] === undefined) {\n      current = '';\n      stylis(scope, styles);\n      caches.inserted[name] = current;\n    }\n  }\n\n  var css = function css() {\n    var styles = createStyles.apply(this, arguments);\n    var selector = key + \"-\" + name;\n\n    if (caches.registered[selector] === undefined) {\n      caches.registered[selector] = stylesWithLabel;\n    }\n\n    insert(\".\" + selector, styles);\n    return selector;\n  };\n\n  var keyframes = function keyframes() {\n    var styles = createStyles.apply(this, arguments);\n    var animation = \"animation-\" + name;\n    insert('', \"@keyframes \" + animation + \"{\" + styles + \"}\");\n    return animation;\n  };\n\n  var injectGlobal = function injectGlobal() {\n    var styles = createStyles.apply(this, arguments);\n    insert('', styles);\n  };\n\n  function getRegisteredStyles(registeredStyles, classNames) {\n    var rawClassName = '';\n    classNames.split(' ').forEach(function (className) {\n      if (caches.registered[className] !== undefined) {\n        registeredStyles.push(className);\n      } else {\n        rawClassName += className + \" \";\n      }\n    });\n    return rawClassName;\n  }\n\n  function merge(className, sourceMap) {\n    var registeredStyles = [];\n    var rawClassName = getRegisteredStyles(registeredStyles, className);\n\n    if (registeredStyles.length < 2) {\n      return className;\n    }\n\n    return rawClassName + css(registeredStyles, sourceMap);\n  }\n\n  function cx() {\n    for (var _len2 = arguments.length, classNames = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      classNames[_key2] = arguments[_key2];\n    }\n\n    return merge(classnames(classNames));\n  }\n\n  function hydrateSingleId(id) {\n    caches.inserted[id] = true;\n  }\n\n  function hydrate(ids) {\n    ids.forEach(hydrateSingleId);\n  }\n\n  function flush() {\n    if (isBrowser) {\n      sheet.flush();\n      sheet.inject();\n    }\n\n    caches.inserted = {};\n    caches.registered = {};\n  }\n\n  if (isBrowser) {\n    var chunks = document.querySelectorAll(\"[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(chunks, function (node) {\n      // $FlowFixMe\n      sheet.tags[0].parentNode.insertBefore(node, sheet.tags[0]); // $FlowFixMe\n\n      node.getAttribute(\"data-emotion-\" + key).split(' ').forEach(hydrateSingleId);\n    });\n  }\n\n  var emotion = {\n    flush: flush,\n    hydrate: hydrate,\n    cx: cx,\n    merge: merge,\n    getRegisteredStyles: getRegisteredStyles,\n    injectGlobal: injectGlobal,\n    keyframes: keyframes,\n    css: css,\n    sheet: sheet,\n    caches: caches\n  };\n  context.__SECRET_EMOTION__ = emotion;\n  return emotion;\n}\n\nexport default createEmotion;\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","import React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { css, injectGlobal } from 'emotion';\nimport { createPortal, findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport raf from 'raf';\nimport AutosizeInput from 'react-input-autosize';\nimport { Transition, TransitionGroup } from 'react-transition-group';\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n   @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n   @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n  if (!name) {\n    return prefix;\n  } else if (name[0] === '-') {\n    return prefix + name;\n  } else {\n    return prefix + '__' + name;\n  }\n}\n\nfunction classNames(prefix, cssKey, state, className) {\n  var arr = [cssKey, className];\n\n  if (state && prefix) {\n    for (var key in state) {\n      if (state.hasOwnProperty(key) && state[key]) {\n        arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n      }\n    }\n  }\n\n  return arr.filter(function (i) {\n    return i;\n  }).map(function (i) {\n    return String(i).trim();\n  }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n  if (Array.isArray(value)) return value.filter(Boolean);\n  if (_typeof(value) === 'object' && value !== null) return [value];\n  return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n  if (onInputChange) {\n    var newValue = onInputChange(inputValue, actionMeta);\n    if (typeof newValue === 'string') return newValue;\n  }\n\n  return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n  return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n  if (isDocumentElement(el)) {\n    return window.pageYOffset;\n  }\n\n  return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n  // with a scroll distance, we perform scroll on the element\n  if (isDocumentElement(el)) {\n    window.scrollTo(0, top);\n    return;\n  }\n\n  el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n  var style = getComputedStyle(element);\n  var excludeStaticParent = style.position === 'absolute';\n  var overflowRx = /(auto|scroll)/;\n  var docEl = document.documentElement; // suck it, flow...\n\n  if (style.position === 'fixed') return docEl;\n\n  for (var parent = element; parent = parent.parentElement;) {\n    style = getComputedStyle(parent);\n\n    if (excludeStaticParent && style.position === 'static') {\n      continue;\n    }\n\n    if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n      return parent;\n    }\n  }\n\n  return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n  @param t: time (elapsed)\n  @param b: initial value\n  @param c: amount of change\n  @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n  return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n  var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n  var start = getScrollTop(element);\n  var change = to - start;\n  var increment = 10;\n  var currentTime = 0;\n\n  function animateScroll() {\n    currentTime += increment;\n    var val = easeOutCubic(currentTime, start, change, duration);\n    scrollTo(element, val);\n\n    if (currentTime < duration) {\n      raf(animateScroll);\n    } else {\n      callback(element);\n    }\n  }\n\n  animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n  var menuRect = menuEl.getBoundingClientRect();\n  var focusedRect = focusedEl.getBoundingClientRect();\n  var overScroll = focusedEl.offsetHeight / 3;\n\n  if (focusedRect.bottom + overScroll > menuRect.bottom) {\n    scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n  } else if (focusedRect.top - overScroll < menuRect.top) {\n    scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n  }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    bottom: rect.bottom,\n    height: rect.height,\n    left: rect.left,\n    right: rect.right,\n    top: rect.top,\n    width: rect.width\n  };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n  try {\n    document.createEvent('TouchEvent');\n    return true;\n  } catch (e) {\n    return false;\n  }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n  try {\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction getMenuPlacement(_ref) {\n  var maxHeight = _ref.maxHeight,\n      menuEl = _ref.menuEl,\n      minHeight = _ref.minHeight,\n      placement = _ref.placement,\n      shouldScroll = _ref.shouldScroll,\n      isFixedPosition = _ref.isFixedPosition,\n      theme = _ref.theme;\n  var spacing = theme.spacing;\n  var scrollParent = getScrollParent(menuEl);\n  var defaultState = {\n    placement: 'bottom',\n    maxHeight: maxHeight\n  }; // something went wrong, return default state\n\n  if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n  // the menu is rendered\n\n  var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n      scrollHeight = _scrollParent$getBoun.height;\n\n  var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n      menuBottom = _menuEl$getBoundingCl.bottom,\n      menuHeight = _menuEl$getBoundingCl.height,\n      menuTop = _menuEl$getBoundingCl.top;\n\n  var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n      containerTop = _menuEl$offsetParent$.top;\n\n  var viewHeight = window.innerHeight;\n  var scrollTop = getScrollTop(scrollParent);\n  var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n  var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n  var viewSpaceAbove = containerTop - marginTop;\n  var viewSpaceBelow = viewHeight - menuTop;\n  var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n  var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n  var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n  var scrollUp = scrollTop + menuTop - marginTop;\n  var scrollDuration = 160;\n\n  switch (placement) {\n    case 'auto':\n    case 'bottom':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceBelow >= menuHeight) {\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        }\n\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n        } // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n\n        var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n        return {\n          placement: 'bottom',\n          maxHeight: constrainedHeight\n        };\n      } // 4. Forked beviour when there isn't enough space below\n      // AUTO: flip the menu, render above\n\n\n      if (placement === 'auto' || isFixedPosition) {\n        // may need to be constrained after flipping\n        var _constrainedHeight = maxHeight;\n        var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n        if (spaceAbove >= minHeight) {\n          _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight\n        };\n      } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n      if (placement === 'bottom') {\n        scrollTo(scrollParent, scrollDown);\n        return {\n          placement: 'bottom',\n          maxHeight: maxHeight\n        };\n      }\n\n      break;\n\n    case 'top':\n      // 1: the menu will fit, do nothing\n      if (viewSpaceAbove >= menuHeight) {\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 2: the menu will fit, if scrolled\n\n\n      if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: maxHeight\n        };\n      } // 3: the menu will fit, if constrained\n\n\n      if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n        var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n        // so give them whatever is available below rather than the minHeight.\n\n        if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n          _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n        }\n\n        if (shouldScroll) {\n          animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n        }\n\n        return {\n          placement: 'top',\n          maxHeight: _constrainedHeight2\n        };\n      } // 4. not enough space, the browser WILL NOT increase scrollable area when\n      // absolutely positioned element rendered above the viewport (only below).\n      // Flip the menu, render below\n\n\n      return {\n        placement: 'bottom',\n        maxHeight: maxHeight\n      };\n\n    default:\n      throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n  } // fulfil contract with flow: implicit return value of undefined\n\n\n  return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n  var placementToCSSProp = {\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n  return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n  var _ref3;\n\n  var placement = _ref2.placement,\n      _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      spacing = _ref2$theme.spacing,\n      colors = _ref2$theme.colors;\n  return _ref3 = {\n    label: 'menu'\n  }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n}; // NOTE: internal only\n\nvar MenuPlacer =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(MenuPlacer, _Component);\n\n  function MenuPlacer() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, MenuPlacer);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n      maxHeight: _this.props.maxMenuHeight,\n      placement: null\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPlacement\", function (ref) {\n      var _this$props = _this.props,\n          minMenuHeight = _this$props.minMenuHeight,\n          maxMenuHeight = _this$props.maxMenuHeight,\n          menuPlacement = _this$props.menuPlacement,\n          menuPosition = _this$props.menuPosition,\n          menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n          theme = _this$props.theme;\n      var getPortalPlacement = _this.context.getPortalPlacement;\n      if (!ref) return; // DO NOT scroll if position is fixed\n\n      var isFixedPosition = menuPosition === 'fixed';\n      var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n      var state = getMenuPlacement({\n        maxHeight: maxMenuHeight,\n        menuEl: ref,\n        minHeight: minMenuHeight,\n        placement: menuPlacement,\n        shouldScroll: shouldScroll,\n        isFixedPosition: isFixedPosition,\n        theme: theme\n      });\n      if (getPortalPlacement) getPortalPlacement(state);\n\n      _this.setState(state);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getUpdatedProps\", function () {\n      var menuPlacement = _this.props.menuPlacement;\n      var placement = _this.state.placement || coercePlacement(menuPlacement);\n      return _objectSpread({}, _this.props, {\n        placement: placement,\n        maxHeight: _this.state.maxHeight\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(MenuPlacer, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children({\n        ref: this.getPlacement,\n        placerProps: this.getUpdatedProps()\n      });\n    }\n  }]);\n\n  return MenuPlacer;\n}(Component);\n\n_defineProperty(MenuPlacer, \"contextTypes\", {\n  getPortalPlacement: PropTypes.func\n});\n\nvar Menu = function Menu(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  var cn = cx(\n  /*#__PURE__*/\n  css(getStyles('menu', props)), {\n    menu: true\n  }, className);\n  return React.createElement(\"div\", _extends({\n    className: cn\n  }, innerProps, {\n    ref: innerRef\n  }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n  var maxHeight = _ref4.maxHeight,\n      baseUnit = _ref4.theme.spacing.baseUnit;\n  return {\n    maxHeight: maxHeight,\n    overflowY: 'auto',\n    paddingBottom: baseUnit,\n    paddingTop: baseUnit,\n    position: 'relative',\n    // required for offset[Height, Top] > keyboard scroll\n    WebkitOverflowScrolling: 'touch'\n  };\n};\nvar MenuList = function MenuList(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isMulti = props.isMulti,\n      innerRef = props.innerRef;\n  return React.createElement(\"div\", {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('menuList', props)), {\n      'menu-list': true,\n      'menu-list--is-multi': isMulti\n    }, className),\n    ref: innerRef\n  }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n  var _ref5$theme = _ref5.theme,\n      baseUnit = _ref5$theme.spacing.baseUnit,\n      colors = _ref5$theme.colors;\n  return {\n    color: colors.neutral40,\n    padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n    textAlign: 'center'\n  };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('noOptionsMessage', props)), {\n      'menu-notice': true,\n      'menu-notice--no-options': true\n    }, className)\n  }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n  children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('loadingMessage', props)), {\n      'menu-notice': true,\n      'menu-notice--loading': true\n    }, className)\n  }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n  children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n  var rect = _ref6.rect,\n      offset = _ref6.offset,\n      position = _ref6.position;\n  return {\n    left: rect.left,\n    position: position,\n    top: offset,\n    width: rect.width,\n    zIndex: 1\n  };\n};\nvar MenuPortal =\n/*#__PURE__*/\nfunction (_Component2) {\n  _inherits(MenuPortal, _Component2);\n\n  function MenuPortal() {\n    var _getPrototypeOf3;\n\n    var _this2;\n\n    _classCallCheck(this, MenuPortal);\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    _this2 = _possibleConstructorReturn(this, (_getPrototypeOf3 = _getPrototypeOf(MenuPortal)).call.apply(_getPrototypeOf3, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"state\", {\n      placement: null\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"getPortalPlacement\", function (_ref7) {\n      var placement = _ref7.placement;\n      var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n      if (placement !== initialPlacement) {\n        _this2.setState({\n          placement: placement\n        });\n      }\n    });\n\n    return _this2;\n  }\n\n  _createClass(MenuPortal, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        getPortalPlacement: this.getPortalPlacement\n      };\n    } // callback for occassions where the menu must \"flip\"\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          appendTo = _this$props2.appendTo,\n          children = _this$props2.children,\n          controlElement = _this$props2.controlElement,\n          menuPlacement = _this$props2.menuPlacement,\n          position = _this$props2.menuPosition,\n          getStyles = _this$props2.getStyles;\n      var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n      if (!appendTo && !isFixed || !controlElement) {\n        return null;\n      }\n\n      var placement = this.state.placement || coercePlacement(menuPlacement);\n      var rect = getBoundingClientObj(controlElement);\n      var scrollDistance = isFixed ? 0 : window.pageYOffset;\n      var offset = rect[placement] + scrollDistance;\n      var state = {\n        offset: offset,\n        position: position,\n        rect: rect\n      }; // same wrapper element whether fixed or portalled\n\n      var menuWrapper = React.createElement(\"div\", {\n        className:\n        /*#__PURE__*/\n\n        /*#__PURE__*/\n        css(getStyles('menuPortal', state))\n      }, children);\n      return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n    }\n  }]);\n\n  return MenuPortal;\n}(Component);\n\n_defineProperty(MenuPortal, \"childContextTypes\", {\n  getPortalPlacement: PropTypes.func\n});\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n  // fast-deep-equal index.js 2.0.1\n  if (a === b) return true;\n\n  if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n    var arrA = isArray(a),\n        arrB = isArray(b),\n        i,\n        length,\n        key;\n\n    if (arrA && arrB) {\n      length = a.length;\n      if (length != b.length) return false;\n\n      for (i = length; i-- !== 0;) {\n        if (!equal(a[i], b[i])) return false;\n      }\n\n      return true;\n    }\n\n    if (arrA != arrB) return false;\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA != dateB) return false;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA != regexpB) return false;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    var keys = keyList(a);\n    length = keys.length;\n\n    if (length !== keyList(b).length) {\n      return false;\n    }\n\n    for (i = length; i-- !== 0;) {\n      if (!hasProp.call(b, keys[i])) return false;\n    } // end fast-deep-equal\n    // Custom handling for React\n\n\n    for (i = length; i-- !== 0;) {\n      key = keys[i];\n\n      if (key === '_owner' && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner.\n        //  _owner contains circular references\n        // and is not needed when comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of a react element\n        continue;\n      } else {\n        // all other properties should be traversed as usual\n        if (!equal(a[key], b[key])) return false;\n      }\n    } // fast-deep-equal index.js 2.0.1\n\n\n    return true;\n  }\n\n  return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (error.message && error.message.match(/stack|recursion/i)) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n      return false;\n    } // some other error. we should definitely know about these\n\n\n    throw error;\n  }\n}\n\nvar diacritics = [{\n  base: 'A',\n  letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n}, {\n  base: 'AA',\n  letters: /[\\uA732]/g\n}, {\n  base: 'AE',\n  letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n  base: 'AO',\n  letters: /[\\uA734]/g\n}, {\n  base: 'AU',\n  letters: /[\\uA736]/g\n}, {\n  base: 'AV',\n  letters: /[\\uA738\\uA73A]/g\n}, {\n  base: 'AY',\n  letters: /[\\uA73C]/g\n}, {\n  base: 'B',\n  letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n  base: 'C',\n  letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n  base: 'D',\n  letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n  base: 'DZ',\n  letters: /[\\u01F1\\u01C4]/g\n}, {\n  base: 'Dz',\n  letters: /[\\u01F2\\u01C5]/g\n}, {\n  base: 'E',\n  letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n}, {\n  base: 'F',\n  letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n  base: 'G',\n  letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n  base: 'H',\n  letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n  base: 'I',\n  letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n  base: 'J',\n  letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n  base: 'K',\n  letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n  base: 'L',\n  letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n  base: 'LJ',\n  letters: /[\\u01C7]/g\n}, {\n  base: 'Lj',\n  letters: /[\\u01C8]/g\n}, {\n  base: 'M',\n  letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n  base: 'N',\n  letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n  base: 'NJ',\n  letters: /[\\u01CA]/g\n}, {\n  base: 'Nj',\n  letters: /[\\u01CB]/g\n}, {\n  base: 'O',\n  letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n}, {\n  base: 'OI',\n  letters: /[\\u01A2]/g\n}, {\n  base: 'OO',\n  letters: /[\\uA74E]/g\n}, {\n  base: 'OU',\n  letters: /[\\u0222]/g\n}, {\n  base: 'P',\n  letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n  base: 'Q',\n  letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n  base: 'R',\n  letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n  base: 'S',\n  letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n  base: 'T',\n  letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n  base: 'TZ',\n  letters: /[\\uA728]/g\n}, {\n  base: 'U',\n  letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n}, {\n  base: 'V',\n  letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n  base: 'VY',\n  letters: /[\\uA760]/g\n}, {\n  base: 'W',\n  letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n  base: 'X',\n  letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n  base: 'Y',\n  letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n  base: 'Z',\n  letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n  base: 'a',\n  letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n}, {\n  base: 'aa',\n  letters: /[\\uA733]/g\n}, {\n  base: 'ae',\n  letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n  base: 'ao',\n  letters: /[\\uA735]/g\n}, {\n  base: 'au',\n  letters: /[\\uA737]/g\n}, {\n  base: 'av',\n  letters: /[\\uA739\\uA73B]/g\n}, {\n  base: 'ay',\n  letters: /[\\uA73D]/g\n}, {\n  base: 'b',\n  letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n  base: 'c',\n  letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n  base: 'd',\n  letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n  base: 'dz',\n  letters: /[\\u01F3\\u01C6]/g\n}, {\n  base: 'e',\n  letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n}, {\n  base: 'f',\n  letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n  base: 'g',\n  letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n  base: 'h',\n  letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n  base: 'hv',\n  letters: /[\\u0195]/g\n}, {\n  base: 'i',\n  letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n  base: 'j',\n  letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n  base: 'k',\n  letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n  base: 'l',\n  letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n  base: 'lj',\n  letters: /[\\u01C9]/g\n}, {\n  base: 'm',\n  letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n  base: 'n',\n  letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n  base: 'nj',\n  letters: /[\\u01CC]/g\n}, {\n  base: 'o',\n  letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n}, {\n  base: 'oi',\n  letters: /[\\u01A3]/g\n}, {\n  base: 'ou',\n  letters: /[\\u0223]/g\n}, {\n  base: 'oo',\n  letters: /[\\uA74F]/g\n}, {\n  base: 'p',\n  letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n  base: 'q',\n  letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n  base: 'r',\n  letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n  base: 's',\n  letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n  base: 't',\n  letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n  base: 'tz',\n  letters: /[\\uA729]/g\n}, {\n  base: 'u',\n  letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n}, {\n  base: 'v',\n  letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n  base: 'vy',\n  letters: /[\\uA761]/g\n}, {\n  base: 'w',\n  letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n  base: 'x',\n  letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n  base: 'y',\n  letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n  base: 'z',\n  letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\nvar stripDiacritics = function stripDiacritics(str) {\n  for (var i = 0; i < diacritics.length; i++) {\n    str = str.replace(diacritics[i].letters, diacritics[i].base);\n  }\n\n  return str;\n};\n\nvar trimString = function trimString(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n  return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n  return function (option, rawInput) {\n    var _ignoreCase$ignoreAcc = _objectSpread({\n      ignoreCase: true,\n      ignoreAccents: true,\n      stringify: defaultStringify,\n      trim: true,\n      matchFrom: 'any'\n    }, config),\n        ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n        ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n        stringify = _ignoreCase$ignoreAcc.stringify,\n        trim = _ignoreCase$ignoreAcc.trim,\n        matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n    var input = trim ? trimString(rawInput) : rawInput;\n    var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n    if (ignoreCase) {\n      input = input.toLowerCase();\n      candidate = candidate.toLowerCase();\n    }\n\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n      candidate = stripDiacritics(candidate);\n    }\n\n    return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n  };\n};\n\nvar A11yText = function A11yText(props) {\n  return React.createElement(\"span\", _extends({\n    className:\n    /*#__PURE__*/\n\n    /*#__PURE__*/\n    css({\n      label: 'a11yText',\n      zIndex: 9999,\n      border: 0,\n      clip: 'rect(1px, 1px, 1px, 1px)',\n      height: 1,\n      width: 1,\n      position: 'absolute',\n      overflow: 'hidden',\n      padding: 0,\n      whiteSpace: 'nowrap',\n      backgroundColor: 'red',\n      color: 'blue'\n    })\n  }, props));\n};\n\nvar DummyInput =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(DummyInput, _Component);\n\n  function DummyInput() {\n    _classCallCheck(this, DummyInput);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(DummyInput).apply(this, arguments));\n  }\n\n  _createClass(DummyInput, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          inProp = _this$props.in,\n          out = _this$props.out,\n          onExited = _this$props.onExited,\n          appear = _this$props.appear,\n          enter = _this$props.enter,\n          exit = _this$props.exit,\n          innerRef = _this$props.innerRef,\n          emotion = _this$props.emotion,\n          props = _objectWithoutProperties(_this$props, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n      return React.createElement(\"input\", _extends({\n        ref: innerRef\n      }, props, {\n        className:\n        /*#__PURE__*/\n\n        /*#__PURE__*/\n        css({\n          label: 'dummyInput',\n          // get rid of any default styles\n          background: 0,\n          border: 0,\n          fontSize: 'inherit',\n          outline: 0,\n          padding: 0,\n          // important! without `width` browsers won't allow focus\n          width: 1,\n          // remove cursor on desktop\n          color: 'transparent',\n          // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n          left: -100,\n          opacity: 0,\n          position: 'relative',\n          transform: 'scale(0)'\n        })\n      }));\n    }\n  }]);\n\n  return DummyInput;\n}(Component);\n\nvar NodeResolver =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(NodeResolver, _Component);\n\n  function NodeResolver() {\n    _classCallCheck(this, NodeResolver);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(NodeResolver).apply(this, arguments));\n  }\n\n  _createClass(NodeResolver, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.innerRef(findDOMNode(this));\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.props.innerRef(null);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n\n  return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n  boxSizing: 'border-box',\n  // account for possible declaration `width: 100%;` on body\n  overflow: 'hidden',\n  position: 'relative',\n  height: '100%'\n};\n\nfunction preventTouchMove(e) {\n  e.preventDefault();\n}\nfunction allowTouchMove(e) {\n  e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n  var top = this.scrollTop;\n  var totalScroll = this.scrollHeight;\n  var currentScroll = top + this.offsetHeight;\n\n  if (top === 0) {\n    this.scrollTop = 1;\n  } else if (currentScroll === totalScroll) {\n    this.scrollTop = top - 1;\n  }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n  return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(ScrollLock, _Component);\n\n  function ScrollLock() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, ScrollLock);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollLock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"originalStyles\", {});\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"listenerOptions\", {\n      capture: false,\n      passive: false\n    });\n\n    return _this;\n  }\n\n  _createClass(ScrollLock, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      if (!canUseDOM) return;\n      var _this$props = this.props,\n          accountForScrollbars = _this$props.accountForScrollbars,\n          touchScrollTarget = _this$props.touchScrollTarget;\n      var target = document.body;\n      var targetStyle = target && target.style;\n\n      if (accountForScrollbars) {\n        // store any styles already applied to the body\n        STYLE_KEYS.forEach(function (key) {\n          var val = targetStyle && targetStyle[key];\n          _this2.originalStyles[key] = val;\n        });\n      } // apply the lock styles and padding if this is the first scroll lock\n\n\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n        var clientWidth = document.body ? document.body.clientWidth : 0;\n        var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n        Object.keys(LOCK_STYLES).forEach(function (key) {\n          var val = LOCK_STYLES[key];\n\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n\n        if (targetStyle) {\n          targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n        }\n      } // account for touch devices\n\n\n      if (target && isTouchDevice()) {\n        // Mobile Safari ignores { overflow: hidden } declaration on the body.\n        target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n        if (touchScrollTarget) {\n          touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      } // increment active scroll locks\n\n\n      activeScrollLocks += 1;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this3 = this;\n\n      if (!canUseDOM) return;\n      var _this$props2 = this.props,\n          accountForScrollbars = _this$props2.accountForScrollbars,\n          touchScrollTarget = _this$props2.touchScrollTarget;\n      var target = document.body;\n      var targetStyle = target && target.style; // safely decrement active scroll locks\n\n      activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n      if (accountForScrollbars && activeScrollLocks < 1) {\n        STYLE_KEYS.forEach(function (key) {\n          var val = _this3.originalStyles[key];\n\n          if (targetStyle) {\n            targetStyle[key] = val;\n          }\n        });\n      } // remove touch listeners\n\n\n      if (target && isTouchDevice()) {\n        target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n        if (touchScrollTarget) {\n          touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n          touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return null;\n    }\n  }]);\n\n  return ScrollLock;\n}(Component);\n\n_defineProperty(ScrollLock, \"defaultProps\", {\n  accountForScrollbars: true\n});\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock =\n/*#__PURE__*/\nfunction (_PureComponent) {\n  _inherits(ScrollBlock, _PureComponent);\n\n  function ScrollBlock() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, ScrollBlock);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollBlock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n      touchScrollTarget: null\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n      if (ref === _this.state.touchScrollTarget) return;\n\n      _this.setState({\n        touchScrollTarget: ref\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blurSelectInput\", function () {\n      if (document.activeElement) {\n        document.activeElement.blur();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(ScrollBlock, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          isEnabled = _this$props.isEnabled;\n      var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n      if (!isEnabled) return children;\n      /*\n       * Div\n       * ------------------------------\n       * blocks scrolling on non-body elements behind the menu\n        * NodeResolver\n       * ------------------------------\n       * we need a reference to the scrollable element to \"unlock\" scroll on\n       * mobile devices\n        * ScrollLock\n       * ------------------------------\n       * actually does the scroll locking\n       */\n\n      return React.createElement(\"div\", null, React.createElement(\"div\", {\n        onClick: this.blurSelectInput,\n        className:\n        /*#__PURE__*/\n\n        /*#__PURE__*/\n        css({\n          position: 'fixed',\n          left: 0,\n          bottom: 0,\n          right: 0,\n          top: 0\n        })\n      }), React.createElement(NodeResolver, {\n        innerRef: this.getScrollTarget\n      }, children), touchScrollTarget ? React.createElement(ScrollLock, {\n        touchScrollTarget: touchScrollTarget\n      }) : null);\n    }\n  }]);\n\n  return ScrollBlock;\n}(PureComponent);\n\nvar ScrollCaptor =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(ScrollCaptor, _Component);\n\n  function ScrollCaptor() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, ScrollCaptor);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollCaptor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isBottom\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isTop\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollTarget\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"touchStart\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancelScroll\", function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEventDelta\", function (event, delta) {\n      var _this$props = _this.props,\n          onBottomArrive = _this$props.onBottomArrive,\n          onBottomLeave = _this$props.onBottomLeave,\n          onTopArrive = _this$props.onTopArrive,\n          onTopLeave = _this$props.onTopLeave;\n      var _this$scrollTarget = _this.scrollTarget,\n          scrollTop = _this$scrollTarget.scrollTop,\n          scrollHeight = _this$scrollTarget.scrollHeight,\n          clientHeight = _this$scrollTarget.clientHeight;\n      var target = _this.scrollTarget;\n      var isDeltaPositive = delta > 0;\n      var availableScroll = scrollHeight - clientHeight - scrollTop;\n      var shouldCancelScroll = false; // reset bottom/top flags\n\n      if (availableScroll > delta && _this.isBottom) {\n        if (onBottomLeave) onBottomLeave(event);\n        _this.isBottom = false;\n      }\n\n      if (isDeltaPositive && _this.isTop) {\n        if (onTopLeave) onTopLeave(event);\n        _this.isTop = false;\n      } // bottom limit\n\n\n      if (isDeltaPositive && delta > availableScroll) {\n        if (onBottomArrive && !_this.isBottom) {\n          onBottomArrive(event);\n        }\n\n        target.scrollTop = scrollHeight;\n        shouldCancelScroll = true;\n        _this.isBottom = true; // top limit\n      } else if (!isDeltaPositive && -delta > scrollTop) {\n        if (onTopArrive && !_this.isTop) {\n          onTopArrive(event);\n        }\n\n        target.scrollTop = 0;\n        shouldCancelScroll = true;\n        _this.isTop = true;\n      } // cancel scroll\n\n\n      if (shouldCancelScroll) {\n        _this.cancelScroll(event);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWheel\", function (event) {\n      _this.handleEventDelta(event, event.deltaY);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (event) {\n      // set touch start so we can calculate touchmove delta\n      _this.touchStart = event.changedTouches[0].clientY;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (event) {\n      var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n      _this.handleEventDelta(event, deltaY);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n      _this.scrollTarget = ref;\n    });\n\n    return _this;\n  }\n\n  _createClass(ScrollCaptor, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListening(this.scrollTarget);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListening(this.scrollTarget);\n    }\n  }, {\n    key: \"startListening\",\n    value: function startListening(el) {\n      // bail early if no scroll available\n      if (!el) return;\n      if (el.scrollHeight <= el.clientHeight) return; // all the if statements are to appease Flow 😢\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('wheel', this.onWheel, false);\n      }\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchstart', this.onTouchStart, false);\n      }\n\n      if (typeof el.addEventListener === 'function') {\n        el.addEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: \"stopListening\",\n    value: function stopListening(el) {\n      // bail early if no scroll available\n      if (el.scrollHeight <= el.clientHeight) return; // all the if statements are to appease Flow 😢\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('wheel', this.onWheel, false);\n      }\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchstart', this.onTouchStart, false);\n      }\n\n      if (typeof el.removeEventListener === 'function') {\n        el.removeEventListener('touchmove', this.onTouchMove, false);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return React.createElement(NodeResolver, {\n        innerRef: this.getScrollTarget\n      }, this.props.children);\n    }\n  }]);\n\n  return ScrollCaptor;\n}(Component);\n\nvar ScrollCaptorSwitch =\n/*#__PURE__*/\nfunction (_Component2) {\n  _inherits(ScrollCaptorSwitch, _Component2);\n\n  function ScrollCaptorSwitch() {\n    _classCallCheck(this, ScrollCaptorSwitch);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(ScrollCaptorSwitch).apply(this, arguments));\n  }\n\n  _createClass(ScrollCaptorSwitch, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          isEnabled = _this$props2.isEnabled,\n          props = _objectWithoutProperties(_this$props2, [\"isEnabled\"]);\n\n      return isEnabled ? React.createElement(ScrollCaptor, props) : this.props.children;\n    }\n  }]);\n\n  return ScrollCaptorSwitch;\n}(Component);\n\n_defineProperty(ScrollCaptorSwitch, \"defaultProps\", {\n  isEnabled: true\n});\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n  var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var isSearchable = context.isSearchable,\n      isMulti = context.isMulti,\n      label = context.label,\n      isDisabled = context.isDisabled;\n\n  switch (event) {\n    case 'menu':\n      return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu, press Tab to select the option and exit the menu.\");\n\n    case 'input':\n      return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n    case 'value':\n      return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n  }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n  var value = context.value,\n      isDisabled = context.isDisabled;\n  if (!value) return;\n\n  switch (event) {\n    case 'deselect-option':\n    case 'pop-value':\n    case 'remove-value':\n      return \"option \".concat(value, \", deselected.\");\n\n    case 'select-option':\n      return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n  }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n  var focusedValue = _ref.focusedValue,\n      getOptionLabel = _ref.getOptionLabel,\n      selectValue = _ref.selectValue;\n  return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n  var focusedOption = _ref2.focusedOption,\n      getOptionLabel = _ref2.getOptionLabel,\n      options = _ref2.options;\n  return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n  var inputValue = _ref3.inputValue,\n      screenReaderMessage = _ref3.screenReaderMessage;\n  return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n  return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n  return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n  return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n  return !!option.isDisabled;\n};\n\nvar containerCSS = function containerCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isRtl = _ref.isRtl;\n  return {\n    label: 'container',\n    direction: isRtl ? 'rtl' : null,\n    pointerEvents: isDisabled ? 'none' : null,\n    // cancel mouse events when disabled\n    position: 'relative'\n  };\n};\nvar SelectContainer = function SelectContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isDisabled = props.isDisabled,\n      isRtl = props.isRtl;\n  return React.createElement(\"div\", _extends({\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('container', props)), {\n      '--is-disabled': isDisabled,\n      '--is-rtl': isRtl\n    }, className)\n  }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    alignItems: 'center',\n    display: 'flex',\n    flex: 1,\n    flexWrap: 'wrap',\n    padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n    WebkitOverflowScrolling: 'touch',\n    position: 'relative',\n    overflow: 'hidden'\n  };\n};\nvar ValueContainer =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(ValueContainer, _Component);\n\n  function ValueContainer() {\n    _classCallCheck(this, ValueContainer);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(ValueContainer).apply(this, arguments));\n  }\n\n  _createClass(ValueContainer, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          className = _this$props.className,\n          cx = _this$props.cx,\n          isMulti = _this$props.isMulti,\n          getStyles = _this$props.getStyles,\n          hasValue = _this$props.hasValue;\n      return React.createElement(\"div\", {\n        className: cx(\n        /*#__PURE__*/\n        css(getStyles('valueContainer', this.props)), {\n          'value-container': true,\n          'value-container--is-multi': isMulti,\n          'value-container--has-value': hasValue\n        }, className)\n      }, children);\n    }\n  }]);\n\n  return ValueContainer;\n}(Component); // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n  return {\n    alignItems: 'center',\n    alignSelf: 'stretch',\n    display: 'flex',\n    flexShrink: 0\n  };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles;\n  return React.createElement(\"div\", {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('indicatorsContainer', props)), {\n      'indicators': true\n    }, className)\n  }, children);\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n  var size = _ref.size,\n      props = _objectWithoutProperties(_ref, [\"size\"]);\n\n  return React.createElement(\"svg\", _extends({\n    height: size,\n    width: size,\n    viewBox: \"0 0 20 20\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className:\n    /*#__PURE__*/\n\n    /*#__PURE__*/\n    css({\n      display: 'inline-block',\n      fill: 'currentColor',\n      lineHeight: 1,\n      stroke: 'currentColor',\n      strokeWidth: 0\n    })\n  }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n  return React.createElement(Svg, _extends({\n    size: 20\n  }, props), React.createElement(\"path\", {\n    d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n  }));\n};\nvar DownChevron = function DownChevron(props) {\n  return React.createElement(Svg, _extends({\n    size: 20\n  }, props), React.createElement(\"path\", {\n    d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n  }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref2) {\n  var isFocused = _ref2.isFocused,\n      _ref2$theme = _ref2.theme,\n      baseUnit = _ref2$theme.spacing.baseUnit,\n      colors = _ref2$theme.colors;\n  return {\n    label: 'indicatorContainer',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    ':hover': {\n      color: isFocused ? colors.neutral80 : colors.neutral40\n    }\n  };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({}, innerProps, {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('dropdownIndicator', props)), {\n      'indicator': true,\n      'dropdown-indicator': true\n    }, className)\n  }), children || React.createElement(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({}, innerProps, {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('clearIndicator', props)), {\n      'indicator': true,\n      'clear-indicator': true\n    }, className)\n  }), children || React.createElement(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref3) {\n  var isDisabled = _ref3.isDisabled,\n      _ref3$theme = _ref3.theme,\n      baseUnit = _ref3$theme.spacing.baseUnit,\n      colors = _ref3$theme.colors;\n  return {\n    label: 'indicatorSeparator',\n    alignSelf: 'stretch',\n    backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n    marginBottom: baseUnit * 2,\n    marginTop: baseUnit * 2,\n    width: 1\n  };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return React.createElement(\"span\", _extends({}, innerProps, {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('indicatorSeparator', props)), {\n      'indicator-separator': true\n    }, className)\n  }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar keyframesName = 'react-select-loading-indicator';\nvar keyframesInjected = false;\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref4) {\n  var isFocused = _ref4.isFocused,\n      size = _ref4.size,\n      _ref4$theme = _ref4.theme,\n      colors = _ref4$theme.colors,\n      baseUnit = _ref4$theme.spacing.baseUnit;\n  return {\n    label: 'loadingIndicator',\n    color: isFocused ? colors.neutral60 : colors.neutral20,\n    display: 'flex',\n    padding: baseUnit * 2,\n    transition: 'color 150ms',\n    alignSelf: 'center',\n    fontSize: size,\n    lineHeight: 1,\n    marginRight: size,\n    textAlign: 'center',\n    verticalAlign: 'middle'\n  };\n};\n\nvar LoadingDot = function LoadingDot(_ref5) {\n  var color = _ref5.color,\n      delay = _ref5.delay,\n      offset = _ref5.offset;\n  return React.createElement(\"span\", {\n    className:\n    /*#__PURE__*/\n\n    /*#__PURE__*/\n    css({\n      animationDuration: '1s',\n      animationDelay: \"\".concat(delay, \"ms\"),\n      animationIterationCount: 'infinite',\n      animationName: keyframesName,\n      animationTimingFunction: 'ease-in-out',\n      backgroundColor: color,\n      borderRadius: '1em',\n      display: 'inline-block',\n      marginLeft: offset ? '1em' : null,\n      height: '1em',\n      verticalAlign: 'top',\n      width: '1em'\n    })\n  });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps,\n      isFocused = props.isFocused,\n      isRtl = props.isRtl,\n      colors = props.theme.colors;\n  var color = isFocused ? colors.neutral80 : colors.neutral20;\n\n  if (!keyframesInjected) {\n    // eslint-disable-next-line no-unused-expressions\n    injectGlobal(\"@keyframes \", keyframesName, \"{0%,80%,100%{opacity:0;}40%{opacity:1;}};\");\n    keyframesInjected = true;\n  }\n\n  return React.createElement(\"div\", _extends({}, innerProps, {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('loadingIndicator', props)), {\n      'indicator': true,\n      'loading-indicator': true\n    }, className)\n  }), React.createElement(LoadingDot, {\n    color: color,\n    delay: 0,\n    offset: isRtl\n  }), React.createElement(LoadingDot, {\n    color: color,\n    delay: 160,\n    offset: true\n  }), React.createElement(LoadingDot, {\n    color: color,\n    delay: 320,\n    offset: !isRtl\n  }));\n};\nLoadingIndicator.defaultProps = {\n  size: 4\n};\n\nvar css$1 = function css$$1(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      _ref$theme = _ref.theme,\n      colors = _ref$theme.colors,\n      borderRadius = _ref$theme.borderRadius,\n      spacing = _ref$theme.spacing;\n  return {\n    label: 'control',\n    alignItems: 'center',\n    backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n    borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n    borderRadius: borderRadius,\n    borderStyle: 'solid',\n    borderWidth: 1,\n    boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n    cursor: 'default',\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'space-between',\n    minHeight: spacing.controlHeight,\n    outline: '0 !important',\n    position: 'relative',\n    transition: 'all 100ms',\n    '&:hover': {\n      borderColor: isFocused ? colors.primary : colors.neutral30\n    }\n  };\n};\n\nvar Control = function Control(props) {\n  var children = props.children,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      className = props.className,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps,\n      menuIsOpen = props.menuIsOpen;\n  return React.createElement(\"div\", _extends({\n    ref: innerRef,\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('control', props)), {\n      'control': true,\n      'control--is-disabled': isDisabled,\n      'control--is-focused': isFocused,\n      'control--menu-is-open': menuIsOpen\n    }, className)\n  }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n  var spacing = _ref.theme.spacing;\n  return {\n    paddingBottom: spacing.baseUnit * 2,\n    paddingTop: spacing.baseUnit * 2\n  };\n};\n\nvar Group = function Group(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      Heading = props.Heading,\n      headingProps = props.headingProps,\n      label = props.label,\n      theme = props.theme,\n      selectProps = props.selectProps;\n  return React.createElement(\"div\", {\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('group', props)), {\n      'group': true\n    }, className)\n  }, React.createElement(Heading, _extends({}, headingProps, {\n    selectProps: selectProps,\n    theme: theme,\n    getStyles: getStyles,\n    cx: cx\n  }), label), React.createElement(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n  var spacing = _ref2.theme.spacing;\n  return {\n    label: 'group',\n    color: '#999',\n    cursor: 'default',\n    display: 'block',\n    fontSize: '75%',\n    fontWeight: '500',\n    marginBottom: '0.25em',\n    paddingLeft: spacing.baseUnit * 3,\n    paddingRight: spacing.baseUnit * 3,\n    textTransform: 'uppercase'\n  };\n};\nvar GroupHeading = function GroupHeading(props) {\n  var className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      theme = props.theme,\n      selectProps = props.selectProps,\n      cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n  return React.createElement(\"div\", _extends({\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('groupHeading', _objectSpread({\n      theme: theme\n    }, cleanProps))), {\n      'group-heading': true\n    }, className)\n  }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    margin: spacing.baseUnit / 2,\n    paddingBottom: spacing.baseUnit / 2,\n    paddingTop: spacing.baseUnit / 2,\n    visibility: isDisabled ? 'hidden' : 'visible',\n    color: colors.neutral80\n  };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n  return {\n    label: 'input',\n    background: 0,\n    border: 0,\n    fontSize: 'inherit',\n    opacity: isHidden ? 0 : 1,\n    outline: 0,\n    padding: 0,\n    color: 'inherit'\n  };\n};\n\nvar Input = function Input(_ref2) {\n  var className = _ref2.className,\n      cx = _ref2.cx,\n      getStyles = _ref2.getStyles,\n      innerRef = _ref2.innerRef,\n      isHidden = _ref2.isHidden,\n      isDisabled = _ref2.isDisabled,\n      theme = _ref2.theme,\n      selectProps = _ref2.selectProps,\n      props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n  return React.createElement(\"div\", {\n    className:\n    /*#__PURE__*/\n\n    /*#__PURE__*/\n    css(getStyles('input', _objectSpread({\n      theme: theme\n    }, props)))\n  }, React.createElement(AutosizeInput, _extends({\n    className: cx(null, {\n      'input': true\n    }, className),\n    inputRef: innerRef,\n    inputStyle: inputStyle(isHidden),\n    disabled: isDisabled\n  }, props)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      borderRadius = _ref$theme.borderRadius,\n      colors = _ref$theme.colors;\n  return {\n    label: 'multiValue',\n    backgroundColor: colors.neutral10,\n    borderRadius: borderRadius / 2,\n    display: 'flex',\n    margin: spacing.baseUnit / 2,\n    minWidth: 0 // resolves flex/text-overflow bug\n\n  };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n  var _ref2$theme = _ref2.theme,\n      borderRadius = _ref2$theme.borderRadius,\n      colors = _ref2$theme.colors,\n      cropWithEllipsis = _ref2.cropWithEllipsis;\n  return {\n    borderRadius: borderRadius / 2,\n    color: colors.neutral80,\n    fontSize: '85%',\n    overflow: 'hidden',\n    padding: 3,\n    paddingLeft: 6,\n    textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n    whiteSpace: 'nowrap'\n  };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n  var _ref3$theme = _ref3.theme,\n      spacing = _ref3$theme.spacing,\n      borderRadius = _ref3$theme.borderRadius,\n      colors = _ref3$theme.colors,\n      isFocused = _ref3.isFocused;\n  return {\n    alignItems: 'center',\n    borderRadius: borderRadius / 2,\n    backgroundColor: isFocused && colors.dangerLight,\n    display: 'flex',\n    paddingLeft: spacing.baseUnit,\n    paddingRight: spacing.baseUnit,\n    ':hover': {\n      backgroundColor: colors.dangerLight,\n      color: colors.danger\n    }\n  };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n  var children = _ref4.children,\n      innerProps = _ref4.innerProps;\n  return React.createElement(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nvar MultiValueRemove =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(MultiValueRemove, _Component);\n\n  function MultiValueRemove() {\n    _classCallCheck(this, MultiValueRemove);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(MultiValueRemove).apply(this, arguments));\n  }\n\n  _createClass(MultiValueRemove, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          innerProps = _this$props.innerProps;\n      return React.createElement(\"div\", innerProps, children || React.createElement(CrossIcon, {\n        size: 14\n      }));\n    }\n  }]);\n\n  return MultiValueRemove;\n}(Component);\n\nvar MultiValue =\n/*#__PURE__*/\nfunction (_Component2) {\n  _inherits(MultiValue, _Component2);\n\n  function MultiValue() {\n    _classCallCheck(this, MultiValue);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(MultiValue).apply(this, arguments));\n  }\n\n  _createClass(MultiValue, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          className = _this$props2.className,\n          components = _this$props2.components,\n          cx = _this$props2.cx,\n          data = _this$props2.data,\n          getStyles = _this$props2.getStyles,\n          innerProps = _this$props2.innerProps,\n          isDisabled = _this$props2.isDisabled,\n          removeProps = _this$props2.removeProps,\n          selectProps = _this$props2.selectProps;\n      var Container = components.Container,\n          Label = components.Label,\n          Remove = components.Remove;\n\n      var containerInnerProps = _objectSpread({\n        className: cx(\n        /*#__PURE__*/\n        css(getStyles('multiValue', this.props)), {\n          'multi-value': true,\n          'multi-value--is-disabled': isDisabled\n        }, className)\n      }, innerProps);\n\n      var labelInnerProps = {\n        className: cx(\n        /*#__PURE__*/\n        css(getStyles('multiValueLabel', this.props)), {\n          'multi-value__label': true\n        }, className)\n      };\n\n      var removeInnerProps = _objectSpread({\n        className: cx(\n        /*#__PURE__*/\n        css(getStyles('multiValueRemove', this.props)), {\n          'multi-value__remove': true\n        }, className)\n      }, removeProps);\n\n      return React.createElement(Container, {\n        data: data,\n        innerProps: containerInnerProps,\n        selectProps: selectProps\n      }, React.createElement(Label, {\n        data: data,\n        innerProps: labelInnerProps,\n        selectProps: selectProps\n      }, children), React.createElement(Remove, {\n        data: data,\n        innerProps: removeInnerProps,\n        selectProps: selectProps\n      }));\n    }\n  }]);\n\n  return MultiValue;\n}(Component);\n\n_defineProperty(MultiValue, \"defaultProps\", {\n  cropWithEllipsis: true\n});\n\nvar optionCSS = function optionCSS(_ref) {\n  var isDisabled = _ref.isDisabled,\n      isFocused = _ref.isFocused,\n      isSelected = _ref.isSelected,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'option',\n    backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n    color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n    cursor: 'default',\n    display: 'block',\n    fontSize: 'inherit',\n    padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n    width: '100%',\n    userSelect: 'none',\n    WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n    // provide some affordance on touch devices\n    ':active': {\n      backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n    }\n  };\n};\n\nvar Option = function Option(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      isFocused = props.isFocused,\n      isSelected = props.isSelected,\n      innerRef = props.innerRef,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({\n    ref: innerRef,\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('option', props)), {\n      'option': true,\n      'option--is-disabled': isDisabled,\n      'option--is-focused': isFocused,\n      'option--is-selected': isSelected\n    }, className)\n  }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n  var _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'placeholder',\n    color: colors.neutral50,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    position: 'absolute',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar Placeholder = function Placeholder(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('placeholder', props)), {\n      'placeholder': true\n    }, className)\n  }, innerProps), children);\n};\n\nvar css$2 = function css$$1(_ref) {\n  var isDisabled = _ref.isDisabled,\n      _ref$theme = _ref.theme,\n      spacing = _ref$theme.spacing,\n      colors = _ref$theme.colors;\n  return {\n    label: 'singleValue',\n    color: isDisabled ? colors.neutral40 : colors.neutral80,\n    marginLeft: spacing.baseUnit / 2,\n    marginRight: spacing.baseUnit / 2,\n    maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n    overflow: 'hidden',\n    position: 'absolute',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    top: '50%',\n    transform: 'translateY(-50%)'\n  };\n};\n\nvar SingleValue = function SingleValue(props) {\n  var children = props.children,\n      className = props.className,\n      cx = props.cx,\n      getStyles = props.getStyles,\n      isDisabled = props.isDisabled,\n      innerProps = props.innerProps;\n  return React.createElement(\"div\", _extends({\n    className: cx(\n    /*#__PURE__*/\n    css(getStyles('singleValue', props)), {\n      'single-value': true,\n      'single-value--is-disabled': isDisabled\n    }, className)\n  }, innerProps), children);\n};\n\nvar components = {\n  ClearIndicator: ClearIndicator,\n  Control: Control,\n  DropdownIndicator: DropdownIndicator,\n  DownChevron: DownChevron,\n  CrossIcon: CrossIcon,\n  Group: Group,\n  GroupHeading: GroupHeading,\n  IndicatorsContainer: IndicatorsContainer,\n  IndicatorSeparator: IndicatorSeparator,\n  Input: Input,\n  LoadingIndicator: LoadingIndicator,\n  Menu: Menu,\n  MenuList: MenuList,\n  MenuPortal: MenuPortal,\n  LoadingMessage: LoadingMessage,\n  NoOptionsMessage: NoOptionsMessage,\n  MultiValue: MultiValue,\n  MultiValueContainer: MultiValueContainer,\n  MultiValueLabel: MultiValueLabel,\n  MultiValueRemove: MultiValueRemove,\n  Option: Option,\n  Placeholder: Placeholder,\n  SelectContainer: SelectContainer,\n  SingleValue: SingleValue,\n  ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n  return _objectSpread({}, components, props.components);\n};\n\nvar defaultStyles = {\n  clearIndicator: clearIndicatorCSS,\n  container: containerCSS,\n  control: css$1,\n  dropdownIndicator: dropdownIndicatorCSS,\n  group: groupCSS,\n  groupHeading: groupHeadingCSS,\n  indicatorsContainer: indicatorsContainerCSS,\n  indicatorSeparator: indicatorSeparatorCSS,\n  input: inputCSS,\n  loadingIndicator: loadingIndicatorCSS,\n  loadingMessage: loadingMessageCSS,\n  menu: menuCSS,\n  menuList: menuListCSS,\n  menuPortal: menuPortalCSS,\n  multiValue: multiValueCSS,\n  multiValueLabel: multiValueLabelCSS,\n  multiValueRemove: multiValueRemoveCSS,\n  noOptionsMessage: noOptionsMessageCSS,\n  option: optionCSS,\n  placeholder: placeholderCSS,\n  singleValue: css$2,\n  valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n  var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  // initialize with source styles\n  var styles = _objectSpread({}, source); // massage in target styles\n\n\n  Object.keys(target).forEach(function (key) {\n    if (source[key]) {\n      styles[key] = function (rsCss, props) {\n        return target[key](source[key](rsCss, props), props);\n      };\n    } else {\n      styles[key] = target[key];\n    }\n  });\n  return styles;\n}\n\nvar colors = {\n  primary: '#2684FF',\n  primary75: '#4C9AFF',\n  primary50: '#B2D4FF',\n  primary25: '#DEEBFF',\n  danger: '#DE350B',\n  dangerLight: '#FFBDAD',\n  neutral0: 'hsl(0, 0%, 100%)',\n  neutral5: 'hsl(0, 0%, 95%)',\n  neutral10: 'hsl(0, 0%, 90%)',\n  neutral20: 'hsl(0, 0%, 80%)',\n  neutral30: 'hsl(0, 0%, 70%)',\n  neutral40: 'hsl(0, 0%, 60%)',\n  neutral50: 'hsl(0, 0%, 50%)',\n  neutral60: 'hsl(0, 0%, 40%)',\n  neutral70: 'hsl(0, 0%, 30%)',\n  neutral80: 'hsl(0, 0%, 20%)',\n  neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\nvar baseUnit = 4;\n/* Used to calculate consistent margin/padding on elements */\n\nvar controlHeight = 38;\n/* The minimum height of the control */\n\nvar menuGutter = baseUnit * 2;\n/* The amount of space between the control and menu */\n\nvar spacing = {\n  baseUnit: baseUnit,\n  controlHeight: controlHeight,\n  menuGutter: menuGutter\n};\nvar defaultTheme = {\n  borderRadius: borderRadius,\n  colors: colors,\n  spacing: spacing\n};\n\nvar defaultProps = {\n  backspaceRemovesValue: true,\n  blurInputOnSelect: isTouchCapable(),\n  captureMenuScroll: !isTouchCapable(),\n  closeMenuOnSelect: true,\n  closeMenuOnScroll: false,\n  components: {},\n  controlShouldRenderValue: true,\n  escapeClearsValue: false,\n  filterOption: createFilter(),\n  formatGroupLabel: formatGroupLabel,\n  getOptionLabel: getOptionLabel,\n  getOptionValue: getOptionValue,\n  isDisabled: false,\n  isLoading: false,\n  isMulti: false,\n  isRtl: false,\n  isSearchable: true,\n  isOptionDisabled: isOptionDisabled,\n  loadingMessage: function loadingMessage() {\n    return 'Loading...';\n  },\n  maxMenuHeight: 300,\n  minMenuHeight: 140,\n  menuIsOpen: false,\n  menuPlacement: 'bottom',\n  menuPosition: 'absolute',\n  menuShouldBlockScroll: false,\n  menuShouldScrollIntoView: !isMobileDevice(),\n  noOptionsMessage: function noOptionsMessage() {\n    return 'No options';\n  },\n  openMenuOnFocus: false,\n  openMenuOnClick: true,\n  options: [],\n  pageSize: 5,\n  placeholder: 'Select...',\n  screenReaderStatus: function screenReaderStatus(_ref) {\n    var count = _ref.count;\n    return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n  },\n  styles: {},\n  tabIndex: '0',\n  tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(Select, _Component);\n\n  // Misc. Instance Properties\n  // ------------------------------\n  // TODO\n  // Refs\n  // ------------------------------\n  // Lifecycle\n  // ------------------------------\n  function Select(_props) {\n    var _this;\n\n    _classCallCheck(this, Select);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(Select).call(this, _props));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n      ariaLiveSelection: '',\n      ariaLiveContext: '',\n      focusedOption: null,\n      focusedValue: null,\n      inputIsHidden: false,\n      isFocused: false,\n      menuOptions: {\n        render: [],\n        focusable: []\n      },\n      selectValue: []\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blockOptionHover\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isComposing\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearFocusValueOnUpdate\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"commonProps\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"components\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hasGroups\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchX\", 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchY\", 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputIsHiddenAfterUpdate\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"instancePrefix\", '');\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"openAfterFocus\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollToFocusedOptionOnUpdate\", false);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"userIsDragging\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"controlRef\", null);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getControlRef\", function (ref) {\n      _this.controlRef = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focusedOptionRef\", null);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getFocusedOptionRef\", function (ref) {\n      _this.focusedOptionRef = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"menuListRef\", null);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMenuListRef\", function (ref) {\n      _this.menuListRef = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputRef\", null);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getInputRef\", function (ref) {\n      _this.inputRef = ref;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cacheComponents\", function (components$$1) {\n      _this.components = defaultComponents({\n        components: components$$1\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focus\", _this.focusInput);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blur\", _this.blurInput);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n      var _this$props = _this.props,\n          onChange = _this$props.onChange,\n          name = _this$props.name;\n      onChange(newValue, _objectSpread({}, actionMeta, {\n        name: name\n      }));\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setValue\", function (newValue) {\n      var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n      var option = arguments.length > 2 ? arguments[2] : undefined;\n      var _this$props2 = _this.props,\n          closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n          isMulti = _this$props2.isMulti;\n\n      _this.onInputChange('', {\n        action: 'set-value'\n      });\n\n      if (closeMenuOnSelect) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } // when the select value should change, we should reset focusedValue\n\n\n      _this.clearFocusValueOnUpdate = true;\n\n      _this.onChange(newValue, {\n        action: action,\n        option: option\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"selectOption\", function (newValue) {\n      var _this$props3 = _this.props,\n          blurInputOnSelect = _this$props3.blurInputOnSelect,\n          isMulti = _this$props3.isMulti;\n      var selectValue = _this.state.selectValue;\n\n      if (isMulti) {\n        if (_this.isOptionSelected(newValue, selectValue)) {\n          var candidate = _this.getOptionValue(newValue);\n\n          _this.setValue(selectValue.filter(function (i) {\n            return _this.getOptionValue(i) !== candidate;\n          }), 'deselect-option', newValue);\n\n          _this.announceAriaLiveSelection({\n            event: 'deselect-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          if (!_this.isOptionDisabled(newValue, selectValue)) {\n            _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue)\n              }\n            });\n          } else {\n            // announce that option is disabled\n            _this.announceAriaLiveSelection({\n              event: 'select-option',\n              context: {\n                value: _this.getOptionLabel(newValue),\n                isDisabled: true\n              }\n            });\n          }\n        }\n      } else {\n        if (!_this.isOptionDisabled(newValue, selectValue)) {\n          _this.setValue(newValue, 'select-option');\n\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue)\n            }\n          });\n        } else {\n          // announce that option is disabled\n          _this.announceAriaLiveSelection({\n            event: 'select-option',\n            context: {\n              value: _this.getOptionLabel(newValue),\n              isDisabled: true\n            }\n          });\n        }\n      }\n\n      if (blurInputOnSelect) {\n        _this.blurInput();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"removeValue\", function (removedValue) {\n      var selectValue = _this.state.selectValue;\n\n      var candidate = _this.getOptionValue(removedValue);\n\n      _this.onChange(selectValue.filter(function (i) {\n        return _this.getOptionValue(i) !== candidate;\n      }), {\n        action: 'remove-value',\n        removedValue: removedValue\n      });\n\n      _this.announceAriaLiveSelection({\n        event: 'remove-value',\n        context: {\n          value: removedValue ? _this.getOptionLabel(removedValue) : ''\n        }\n      });\n\n      _this.focusInput();\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearValue\", function () {\n      var isMulti = _this.props.isMulti;\n\n      _this.onChange(isMulti ? [] : null, {\n        action: 'clear'\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popValue\", function () {\n      var selectValue = _this.state.selectValue;\n      var lastSelectedValue = selectValue[selectValue.length - 1];\n\n      _this.announceAriaLiveSelection({\n        event: 'pop-value',\n        context: {\n          value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n        }\n      });\n\n      _this.onChange(selectValue.slice(0, selectValue.length - 1), {\n        action: 'pop-value',\n        removedValue: lastSelectedValue\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionLabel\", function (data) {\n      return _this.props.getOptionLabel(data);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionValue\", function (data) {\n      return _this.props.getOptionValue(data);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyles\", function (key, props) {\n      var base = defaultStyles[key](props);\n      base.boxSizing = 'border-box';\n      var custom = _this.props.styles[key];\n      return custom ? custom(base, props) : base;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getElementId\", function (element) {\n      return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getActiveDescendentId\", function () {\n      var menuIsOpen = _this.props.menuIsOpen;\n      var _this$state = _this.state,\n          menuOptions = _this$state.menuOptions,\n          focusedOption = _this$state.focusedOption;\n      if (!focusedOption || !menuIsOpen) return undefined;\n      var index = menuOptions.focusable.indexOf(focusedOption);\n      var option = menuOptions.render[index];\n      return option && option.key;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveSelection\", function (_ref2) {\n      var event = _ref2.event,\n          context = _ref2.context;\n\n      _this.setState({\n        ariaLiveSelection: valueEventAriaMessage(event, context)\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveContext\", function (_ref3) {\n      var event = _ref3.event,\n          context = _ref3.context;\n\n      _this.setState({\n        ariaLiveContext: instructionsAriaMessage(event, _objectSpread({}, context, {\n          label: _this.props['aria-label']\n        }))\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseDown\", function (event) {\n      if (event.button !== 0) {\n        return;\n      }\n\n      event.stopPropagation();\n      event.preventDefault();\n\n      _this.focusInput();\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseMove\", function (event) {\n      _this.blockOptionHover = false;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlMouseDown\", function (event) {\n      var openMenuOnClick = _this.props.openMenuOnClick;\n\n      if (!_this.state.isFocused) {\n        if (openMenuOnClick) {\n          _this.openAfterFocus = true;\n        }\n\n        _this.focusInput();\n      } else if (!_this.props.menuIsOpen) {\n        if (openMenuOnClick) {\n          _this.openMenu('first');\n        }\n      } else {\n        //$FlowFixMe\n        if (event.target.tagName !== 'INPUT') {\n          _this.onMenuClose();\n        }\n      } //$FlowFixMe\n\n\n      if (event.target.tagName !== 'INPUT') {\n        event.preventDefault();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorMouseDown\", function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      if (_this.props.isDisabled) return;\n      var _this$props4 = _this.props,\n          isMulti = _this$props4.isMulti,\n          menuIsOpen = _this$props4.menuIsOpen;\n\n      _this.focusInput();\n\n      if (menuIsOpen) {\n        _this.inputIsHiddenAfterUpdate = !isMulti;\n\n        _this.onMenuClose();\n      } else {\n        _this.openMenu('first');\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorMouseDown\", function (event) {\n      // ignore mouse events that weren't triggered by the primary button\n      if (event && event.type === 'mousedown' && event.button !== 0) {\n        return;\n      }\n\n      _this.clearValue();\n\n      event.stopPropagation();\n      _this.openAfterFocus = false;\n      setTimeout(function () {\n        return _this.focusInput();\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onScroll\", function (event) {\n      if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n        if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n          _this.props.onMenuClose();\n        }\n      } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n        if (_this.props.closeMenuOnScroll(event)) {\n          _this.props.onMenuClose();\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionStart\", function () {\n      _this.isComposing = true;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionEnd\", function () {\n      _this.isComposing = false;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (_ref4) {\n      var touches = _ref4.touches;\n      var touch = touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      _this.initialTouchX = touch.clientX;\n      _this.initialTouchY = touch.clientY;\n      _this.userIsDragging = false;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (_ref5) {\n      var touches = _ref5.touches;\n      var touch = touches.item(0);\n\n      if (!touch) {\n        return;\n      }\n\n      var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n      var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n      var moveThreshold = 5;\n      _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchEnd\", function (event) {\n      if (_this.userIsDragging) return; // close the menu if the user taps outside\n      // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n      // on events on child elements, not the document (which we've attached this handler to).\n\n      if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n        _this.blurInput();\n      } // reset move vars\n\n\n      _this.initialTouchX = 0;\n      _this.initialTouchY = 0;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlTouchEnd\", function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onControlMouseDown(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorTouchEnd\", function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onClearIndicatorMouseDown(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorTouchEnd\", function (event) {\n      if (_this.userIsDragging) return;\n\n      _this.onDropdownIndicatorMouseDown(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n      var inputValue = event.currentTarget.value;\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.onInputChange(inputValue, {\n        action: 'input-change'\n      });\n\n      _this.onMenuOpen();\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputFocus\", function (event) {\n      var _this$props5 = _this.props,\n          isSearchable = _this$props5.isSearchable,\n          isMulti = _this$props5.isMulti;\n\n      if (_this.props.onFocus) {\n        _this.props.onFocus(event);\n      }\n\n      _this.inputIsHiddenAfterUpdate = false;\n\n      _this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n\n      _this.setState({\n        isFocused: true\n      });\n\n      if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n        _this.openMenu('first');\n      }\n\n      _this.openAfterFocus = false;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputBlur\", function (event) {\n      if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n        _this.inputRef.focus();\n\n        return;\n      }\n\n      if (_this.props.onBlur) {\n        _this.props.onBlur(event);\n      }\n\n      _this.onInputChange('', {\n        action: 'input-blur'\n      });\n\n      _this.onMenuClose();\n\n      _this.setState({\n        focusedValue: null,\n        isFocused: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onOptionHover\", function (focusedOption) {\n      if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n        return;\n      }\n\n      _this.setState({\n        focusedOption: focusedOption\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"shouldHideSelectedOptions\", function () {\n      var _this$props6 = _this.props,\n          hideSelectedOptions = _this$props6.hideSelectedOptions,\n          isMulti = _this$props6.isMulti;\n      if (hideSelectedOptions === undefined) return isMulti;\n      return hideSelectedOptions;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n      var _this$props7 = _this.props,\n          isMulti = _this$props7.isMulti,\n          backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n          escapeClearsValue = _this$props7.escapeClearsValue,\n          inputValue = _this$props7.inputValue,\n          isClearable = _this$props7.isClearable,\n          isDisabled = _this$props7.isDisabled,\n          menuIsOpen = _this$props7.menuIsOpen,\n          onKeyDown = _this$props7.onKeyDown,\n          tabSelectsValue = _this$props7.tabSelectsValue,\n          openMenuOnFocus = _this$props7.openMenuOnFocus;\n      var _this$state2 = _this.state,\n          focusedOption = _this$state2.focusedOption,\n          focusedValue = _this$state2.focusedValue,\n          selectValue = _this$state2.selectValue;\n      if (isDisabled) return;\n\n      if (typeof onKeyDown === 'function') {\n        onKeyDown(event);\n\n        if (event.defaultPrevented) {\n          return;\n        }\n      } // Block option hover events when the user has just pressed a key\n\n\n      _this.blockOptionHover = true;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('previous');\n\n          break;\n\n        case 'ArrowRight':\n          if (!isMulti || inputValue) return;\n\n          _this.focusValue('next');\n\n          break;\n\n        case 'Delete':\n        case 'Backspace':\n          if (inputValue) return;\n\n          if (focusedValue) {\n            _this.removeValue(focusedValue);\n          } else {\n            if (!backspaceRemovesValue) return;\n\n            if (isMulti) {\n              _this.popValue();\n            } else if (isClearable) {\n              _this.clearValue();\n            }\n          }\n\n          break;\n\n        case 'Tab':\n          if (_this.isComposing) return;\n\n          if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n          // option is already selected; it breaks the flow of navigation\n          openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n            return;\n          }\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'Enter':\n          if (event.keyCode === 229) {\n            // ignore the keydown event from an Input Method Editor(IME)\n            // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n            break;\n          }\n\n          if (menuIsOpen) {\n            if (!focusedOption) return;\n            if (_this.isComposing) return;\n\n            _this.selectOption(focusedOption);\n\n            break;\n          }\n\n          return;\n\n        case 'Escape':\n          if (menuIsOpen) {\n            _this.inputIsHiddenAfterUpdate = false;\n\n            _this.onInputChange('', {\n              action: 'menu-close'\n            });\n\n            _this.onMenuClose();\n          } else if (isClearable && escapeClearsValue) {\n            _this.clearValue();\n          }\n\n          break;\n\n        case ' ':\n          // space\n          if (inputValue) {\n            return;\n          }\n\n          if (!menuIsOpen) {\n            _this.openMenu('first');\n\n            break;\n          }\n\n          if (!focusedOption) return;\n\n          _this.selectOption(focusedOption);\n\n          break;\n\n        case 'ArrowUp':\n          if (menuIsOpen) {\n            _this.focusOption('up');\n          } else {\n            _this.openMenu('last');\n          }\n\n          break;\n\n        case 'ArrowDown':\n          if (menuIsOpen) {\n            _this.focusOption('down');\n          } else {\n            _this.openMenu('first');\n          }\n\n          break;\n\n        case 'PageUp':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pageup');\n\n          break;\n\n        case 'PageDown':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('pagedown');\n\n          break;\n\n        case 'Home':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('first');\n\n          break;\n\n        case 'End':\n          if (!menuIsOpen) return;\n\n          _this.focusOption('last');\n\n          break;\n\n        default:\n          return;\n      }\n\n      event.preventDefault();\n    });\n\n    var value = _props.value;\n    _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n    _this.cacheComponents(_props.components);\n\n    _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n    var _selectValue = cleanValue(value);\n\n    var _menuOptions = _this.buildMenuOptions(_props, _selectValue);\n\n    _this.state.menuOptions = _menuOptions;\n    _this.state.selectValue = _selectValue;\n    return _this;\n  }\n\n  _createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.startListeningComposition();\n      this.startListeningToTouch();\n\n      if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n        // Listen to all scroll events, and filter them out inside of 'onScroll'\n        document.addEventListener('scroll', this.onScroll, true);\n      }\n\n      if (this.props.autoFocus) {\n        this.focusInput();\n      }\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      var _this$props8 = this.props,\n          options = _this$props8.options,\n          value = _this$props8.value,\n          inputValue = _this$props8.inputValue; // re-cache custom components\n\n      this.cacheComponents(nextProps.components); // rebuild the menu options\n\n      if (nextProps.value !== value || nextProps.options !== options || nextProps.inputValue !== inputValue) {\n        var selectValue = cleanValue(nextProps.value);\n        var menuOptions = this.buildMenuOptions(nextProps, selectValue);\n        var focusedValue = this.getNextFocusedValue(selectValue);\n        var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n        this.setState({\n          menuOptions: menuOptions,\n          selectValue: selectValue,\n          focusedOption: focusedOption,\n          focusedValue: focusedValue\n        });\n      } // some updates should toggle the state of the input visibility\n\n\n      if (this.inputIsHiddenAfterUpdate != null) {\n        this.setState({\n          inputIsHidden: this.inputIsHiddenAfterUpdate\n        });\n        delete this.inputIsHiddenAfterUpdate;\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props9 = this.props,\n          isDisabled = _this$props9.isDisabled,\n          menuIsOpen = _this$props9.menuIsOpen;\n      var isFocused = this.state.isFocused;\n\n      if ( // ensure focus is restored correctly when the control becomes enabled\n      isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n      isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n        this.focusInput();\n      } // scroll the focused option into view if necessary\n\n\n      if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n        scrollIntoView(this.menuListRef, this.focusedOptionRef);\n      }\n\n      this.scrollToFocusedOptionOnUpdate = false;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.stopListeningComposition();\n      this.stopListeningToTouch();\n      document.removeEventListener('scroll', this.onScroll, true);\n    }\n  }, {\n    key: \"onMenuOpen\",\n    // ==============================\n    // Consumer Handlers\n    // ==============================\n    value: function onMenuOpen() {\n      this.props.onMenuOpen();\n    }\n  }, {\n    key: \"onMenuClose\",\n    value: function onMenuClose() {\n      var _this$props10 = this.props,\n          isSearchable = _this$props10.isSearchable,\n          isMulti = _this$props10.isMulti;\n      this.announceAriaLiveContext({\n        event: 'input',\n        context: {\n          isSearchable: isSearchable,\n          isMulti: isMulti\n        }\n      });\n      this.onInputChange('', {\n        action: 'menu-close'\n      });\n      this.props.onMenuClose();\n    }\n  }, {\n    key: \"onInputChange\",\n    value: function onInputChange(newValue, actionMeta) {\n      this.props.onInputChange(newValue, actionMeta);\n    } // ==============================\n    // Methods\n    // ==============================\n\n  }, {\n    key: \"focusInput\",\n    value: function focusInput() {\n      if (!this.inputRef) return;\n      this.inputRef.focus();\n    }\n  }, {\n    key: \"blurInput\",\n    value: function blurInput() {\n      if (!this.inputRef) return;\n      this.inputRef.blur();\n    } // aliased for consumers\n\n  }, {\n    key: \"openMenu\",\n    value: function openMenu(focusOption) {\n      var _this$state3 = this.state,\n          menuOptions = _this$state3.menuOptions,\n          selectValue = _this$state3.selectValue,\n          isFocused = _this$state3.isFocused;\n      var isMulti = this.props.isMulti;\n      var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n      if (!isMulti) {\n        var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n        if (selectedIndex > -1) {\n          openAtIndex = selectedIndex;\n        }\n      } // only scroll if the menu isn't already open\n\n\n      this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n      this.inputIsHiddenAfterUpdate = false;\n      this.onMenuOpen();\n      this.setState({\n        focusedValue: null,\n        focusedOption: menuOptions.focusable[openAtIndex]\n      });\n      this.announceAriaLiveContext({\n        event: 'menu'\n      });\n    }\n  }, {\n    key: \"focusValue\",\n    value: function focusValue(direction) {\n      var _this$props11 = this.props,\n          isMulti = _this$props11.isMulti,\n          isSearchable = _this$props11.isSearchable;\n      var _this$state4 = this.state,\n          selectValue = _this$state4.selectValue,\n          focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n      if (!isMulti) return;\n      this.setState({\n        focusedOption: null\n      });\n      var focusedIndex = selectValue.indexOf(focusedValue);\n\n      if (!focusedValue) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({\n          event: 'value'\n        });\n      }\n\n      var lastIndex = selectValue.length - 1;\n      var nextFocus = -1;\n      if (!selectValue.length) return;\n\n      switch (direction) {\n        case 'previous':\n          if (focusedIndex === 0) {\n            // don't cycle from the start to the end\n            nextFocus = 0;\n          } else if (focusedIndex === -1) {\n            // if nothing is focused, focus the last value first\n            nextFocus = lastIndex;\n          } else {\n            nextFocus = focusedIndex - 1;\n          }\n\n          break;\n\n        case 'next':\n          if (focusedIndex > -1 && focusedIndex < lastIndex) {\n            nextFocus = focusedIndex + 1;\n          }\n\n          break;\n      }\n\n      if (nextFocus === -1) {\n        this.announceAriaLiveContext({\n          event: 'input',\n          context: {\n            isSearchable: isSearchable,\n            isMulti: isMulti\n          }\n        });\n      }\n\n      this.setState({\n        inputIsHidden: nextFocus === -1 ? false : true,\n        focusedValue: selectValue[nextFocus]\n      });\n    }\n  }, {\n    key: \"focusOption\",\n    value: function focusOption() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n      var pageSize = this.props.pageSize;\n      var _this$state5 = this.state,\n          focusedOption = _this$state5.focusedOption,\n          menuOptions = _this$state5.menuOptions;\n      var options = menuOptions.focusable;\n      if (!options.length) return;\n      var nextFocus = 0; // handles 'first'\n\n      var focusedIndex = options.indexOf(focusedOption);\n\n      if (!focusedOption) {\n        focusedIndex = -1;\n        this.announceAriaLiveContext({\n          event: 'menu'\n        });\n      }\n\n      if (direction === 'up') {\n        nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n      } else if (direction === 'down') {\n        nextFocus = (focusedIndex + 1) % options.length;\n      } else if (direction === 'pageup') {\n        nextFocus = focusedIndex - pageSize;\n        if (nextFocus < 0) nextFocus = 0;\n      } else if (direction === 'pagedown') {\n        nextFocus = focusedIndex + pageSize;\n        if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n      } else if (direction === 'last') {\n        nextFocus = options.length - 1;\n      }\n\n      this.scrollToFocusedOptionOnUpdate = true;\n      this.setState({\n        focusedOption: options[nextFocus],\n        focusedValue: null\n      });\n      this.announceAriaLiveContext({\n        event: 'menu',\n        context: {\n          isDisabled: isOptionDisabled(options[nextFocus])\n        }\n      });\n    }\n  }, {\n    key: \"getTheme\",\n    // ==============================\n    // Getters\n    // ==============================\n    value: function getTheme() {\n      // Use the default theme if there are no customizations.\n      if (!this.props.theme) {\n        return defaultTheme;\n      } // If the theme prop is a function, assume the function\n      // knows how to merge the passed-in default theme with\n      // its own modifications.\n\n\n      if (typeof this.props.theme === 'function') {\n        return this.props.theme(defaultTheme);\n      } // Otherwise, if a plain theme object was passed in,\n      // overlay it with the default theme.\n\n\n      return _objectSpread({}, defaultTheme, this.props.theme);\n    }\n  }, {\n    key: \"getCommonProps\",\n    value: function getCommonProps() {\n      var clearValue = this.clearValue,\n          getStyles = this.getStyles,\n          setValue = this.setValue,\n          selectOption = this.selectOption,\n          props = this.props;\n      var classNamePrefix = props.classNamePrefix,\n          isMulti = props.isMulti,\n          isRtl = props.isRtl,\n          options = props.options;\n      var selectValue = this.state.selectValue;\n      var hasValue = this.hasValue();\n\n      var getValue = function getValue() {\n        return selectValue;\n      };\n\n      var cx = classNames.bind(null, classNamePrefix);\n      return {\n        cx: cx,\n        clearValue: clearValue,\n        getStyles: getStyles,\n        getValue: getValue,\n        hasValue: hasValue,\n        isMulti: isMulti,\n        isRtl: isRtl,\n        options: options,\n        selectOption: selectOption,\n        setValue: setValue,\n        selectProps: props,\n        theme: this.getTheme()\n      };\n    }\n  }, {\n    key: \"getNextFocusedValue\",\n    value: function getNextFocusedValue(nextSelectValue) {\n      if (this.clearFocusValueOnUpdate) {\n        this.clearFocusValueOnUpdate = false;\n        return null;\n      }\n\n      var _this$state6 = this.state,\n          focusedValue = _this$state6.focusedValue,\n          lastSelectValue = _this$state6.selectValue;\n      var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n      if (lastFocusedIndex > -1) {\n        var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n        if (nextFocusedIndex > -1) {\n          // the focused value is still in the selectValue, return it\n          return focusedValue;\n        } else if (lastFocusedIndex < nextSelectValue.length) {\n          // the focusedValue is not present in the next selectValue array by\n          // reference, so return the new value at the same index\n          return nextSelectValue[lastFocusedIndex];\n        }\n      }\n\n      return null;\n    }\n  }, {\n    key: \"getNextFocusedOption\",\n    value: function getNextFocusedOption(options) {\n      var lastFocusedOption = this.state.focusedOption;\n      return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n    }\n  }, {\n    key: \"hasValue\",\n    value: function hasValue() {\n      var selectValue = this.state.selectValue;\n      return selectValue.length > 0;\n    }\n  }, {\n    key: \"hasOptions\",\n    value: function hasOptions() {\n      return !!this.state.menuOptions.render.length;\n    }\n  }, {\n    key: \"countOptions\",\n    value: function countOptions() {\n      return this.state.menuOptions.focusable.length;\n    }\n  }, {\n    key: \"isClearable\",\n    value: function isClearable() {\n      var _this$props12 = this.props,\n          isClearable = _this$props12.isClearable,\n          isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n      // multi select, by default, IS clearable\n\n      if (isClearable === undefined) return isMulti;\n      return isClearable;\n    }\n  }, {\n    key: \"isOptionDisabled\",\n    value: function isOptionDisabled$$1(option, selectValue) {\n      return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n    }\n  }, {\n    key: \"isOptionSelected\",\n    value: function isOptionSelected(option, selectValue) {\n      var _this2 = this;\n\n      if (selectValue.indexOf(option) > -1) return true;\n\n      if (typeof this.props.isOptionSelected === 'function') {\n        return this.props.isOptionSelected(option, selectValue);\n      }\n\n      var candidate = this.getOptionValue(option);\n      return selectValue.some(function (i) {\n        return _this2.getOptionValue(i) === candidate;\n      });\n    }\n  }, {\n    key: \"filterOption\",\n    value: function filterOption(option, inputValue) {\n      return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n    }\n  }, {\n    key: \"formatOptionLabel\",\n    value: function formatOptionLabel(data, context) {\n      if (typeof this.props.formatOptionLabel === 'function') {\n        var inputValue = this.props.inputValue;\n        var selectValue = this.state.selectValue;\n        return this.props.formatOptionLabel(data, {\n          context: context,\n          inputValue: inputValue,\n          selectValue: selectValue\n        });\n      } else {\n        return this.getOptionLabel(data);\n      }\n    }\n  }, {\n    key: \"formatGroupLabel\",\n    value: function formatGroupLabel$$1(data) {\n      return this.props.formatGroupLabel(data);\n    } // ==============================\n    // Mouse Handlers\n    // ==============================\n\n  }, {\n    key: \"startListeningComposition\",\n    // ==============================\n    // Composition Handlers\n    // ==============================\n    value: function startListeningComposition() {\n      if (document && document.addEventListener) {\n        document.addEventListener('compositionstart', this.onCompositionStart, false);\n        document.addEventListener('compositionend', this.onCompositionEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningComposition\",\n    value: function stopListeningComposition() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('compositionstart', this.onCompositionStart);\n        document.removeEventListener('compositionend', this.onCompositionEnd);\n      }\n    }\n  }, {\n    key: \"startListeningToTouch\",\n    // ==============================\n    // Touch Handlers\n    // ==============================\n    value: function startListeningToTouch() {\n      if (document && document.addEventListener) {\n        document.addEventListener('touchstart', this.onTouchStart, false);\n        document.addEventListener('touchmove', this.onTouchMove, false);\n        document.addEventListener('touchend', this.onTouchEnd, false);\n      }\n    }\n  }, {\n    key: \"stopListeningToTouch\",\n    value: function stopListeningToTouch() {\n      if (document && document.removeEventListener) {\n        document.removeEventListener('touchstart', this.onTouchStart);\n        document.removeEventListener('touchmove', this.onTouchMove);\n        document.removeEventListener('touchend', this.onTouchEnd);\n      }\n    }\n  }, {\n    key: \"buildMenuOptions\",\n    // ==============================\n    // Menu Options\n    // ==============================\n    value: function buildMenuOptions(props, selectValue) {\n      var _this3 = this;\n\n      var _props$inputValue = props.inputValue,\n          inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n          options = props.options;\n\n      var toOption = function toOption(option, id) {\n        var isDisabled = _this3.isOptionDisabled(option, selectValue);\n\n        var isSelected = _this3.isOptionSelected(option, selectValue);\n\n        var label = _this3.getOptionLabel(option);\n\n        var value = _this3.getOptionValue(option);\n\n        if (_this3.shouldHideSelectedOptions() && isSelected || !_this3.filterOption({\n          label: label,\n          value: value,\n          data: option\n        }, inputValue)) {\n          return;\n        }\n\n        var onHover = isDisabled ? undefined : function () {\n          return _this3.onOptionHover(option);\n        };\n        var onSelect = isDisabled ? undefined : function () {\n          return _this3.selectOption(option);\n        };\n        var optionId = \"\".concat(_this3.getElementId('option'), \"-\").concat(id);\n        return {\n          innerProps: {\n            id: optionId,\n            onClick: onSelect,\n            onMouseMove: onHover,\n            onMouseOver: onHover,\n            tabIndex: -1\n          },\n          data: option,\n          isDisabled: isDisabled,\n          isSelected: isSelected,\n          key: optionId,\n          label: label,\n          type: 'option',\n          value: value\n        };\n      };\n\n      return options.reduce(function (acc, item, itemIndex) {\n        if (item.options) {\n          // TODO needs a tidier implementation\n          if (!_this3.hasGroups) _this3.hasGroups = true;\n          var items = item.options;\n          var children = items.map(function (child, i) {\n            var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n            if (option) acc.focusable.push(child);\n            return option;\n          }).filter(Boolean);\n\n          if (children.length) {\n            var groupId = \"\".concat(_this3.getElementId('group'), \"-\").concat(itemIndex);\n            acc.render.push({\n              type: 'group',\n              key: groupId,\n              data: item,\n              options: children\n            });\n          }\n        } else {\n          var option = toOption(item, \"\".concat(itemIndex));\n\n          if (option) {\n            acc.render.push(option);\n            acc.focusable.push(item);\n          }\n        }\n\n        return acc;\n      }, {\n        render: [],\n        focusable: []\n      });\n    } // ==============================\n    // Renderers\n    // ==============================\n\n  }, {\n    key: \"constructAriaLiveMessage\",\n    value: function constructAriaLiveMessage() {\n      var _this$state7 = this.state,\n          ariaLiveContext = _this$state7.ariaLiveContext,\n          selectValue = _this$state7.selectValue,\n          focusedValue = _this$state7.focusedValue,\n          focusedOption = _this$state7.focusedOption;\n      var _this$props13 = this.props,\n          options = _this$props13.options,\n          menuIsOpen = _this$props13.menuIsOpen,\n          inputValue = _this$props13.inputValue,\n          screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n      var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n        focusedValue: focusedValue,\n        getOptionLabel: this.getOptionLabel,\n        selectValue: selectValue\n      }) : ''; // An aria live message representing the currently focused option in the select.\n\n      var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n        focusedOption: focusedOption,\n        getOptionLabel: this.getOptionLabel,\n        options: options\n      }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n      var resultsMsg = resultsAriaMessage({\n        inputValue: inputValue,\n        screenReaderMessage: screenReaderStatus({\n          count: this.countOptions()\n        })\n      });\n      return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n    }\n  }, {\n    key: \"renderInput\",\n    value: function renderInput() {\n      var _this$props14 = this.props,\n          isDisabled = _this$props14.isDisabled,\n          isSearchable = _this$props14.isSearchable,\n          inputId = _this$props14.inputId,\n          inputValue = _this$props14.inputValue,\n          tabIndex = _this$props14.tabIndex;\n      var Input = this.components.Input;\n      var inputIsHidden = this.state.inputIsHidden;\n      var id = inputId || this.getElementId('input');\n\n      if (!isSearchable) {\n        // use a dummy input to maintain focus/blur functionality\n        return React.createElement(DummyInput, {\n          id: id,\n          innerRef: this.getInputRef,\n          onBlur: this.onInputBlur,\n          onChange: noop,\n          onFocus: this.onInputFocus,\n          readOnly: true,\n          disabled: isDisabled,\n          tabIndex: tabIndex,\n          value: \"\"\n        });\n      } // aria attributes makes the JSX \"noisy\", separated for clarity\n\n\n      var ariaAttributes = {\n        'aria-autocomplete': 'list',\n        'aria-label': this.props['aria-label'],\n        'aria-labelledby': this.props['aria-labelledby']\n      };\n      var _this$commonProps = this.commonProps,\n          cx = _this$commonProps.cx,\n          theme = _this$commonProps.theme,\n          selectProps = _this$commonProps.selectProps;\n      return React.createElement(Input, _extends({\n        autoCapitalize: \"none\",\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        cx: cx,\n        getStyles: this.getStyles,\n        id: id,\n        innerRef: this.getInputRef,\n        isDisabled: isDisabled,\n        isHidden: inputIsHidden,\n        onBlur: this.onInputBlur,\n        onChange: this.handleInputChange,\n        onFocus: this.onInputFocus,\n        selectProps: selectProps,\n        spellCheck: \"false\",\n        tabIndex: tabIndex,\n        theme: theme,\n        type: \"text\",\n        value: inputValue\n      }, ariaAttributes));\n    }\n  }, {\n    key: \"renderPlaceholderOrValue\",\n    value: function renderPlaceholderOrValue() {\n      var _this4 = this;\n\n      var _this$components = this.components,\n          MultiValue = _this$components.MultiValue,\n          MultiValueContainer = _this$components.MultiValueContainer,\n          MultiValueLabel = _this$components.MultiValueLabel,\n          MultiValueRemove = _this$components.MultiValueRemove,\n          SingleValue = _this$components.SingleValue,\n          Placeholder = _this$components.Placeholder;\n      var commonProps = this.commonProps;\n      var _this$props15 = this.props,\n          controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n          isDisabled = _this$props15.isDisabled,\n          isMulti = _this$props15.isMulti,\n          inputValue = _this$props15.inputValue,\n          placeholder = _this$props15.placeholder;\n      var _this$state8 = this.state,\n          selectValue = _this$state8.selectValue,\n          focusedValue = _this$state8.focusedValue,\n          isFocused = _this$state8.isFocused;\n\n      if (!this.hasValue() || !controlShouldRenderValue) {\n        return inputValue ? null : React.createElement(Placeholder, _extends({}, commonProps, {\n          key: \"placeholder\",\n          isDisabled: isDisabled,\n          isFocused: isFocused\n        }), placeholder);\n      }\n\n      if (isMulti) {\n        var selectValues = selectValue.map(function (opt) {\n          var isOptionFocused = opt === focusedValue;\n          return React.createElement(MultiValue, _extends({}, commonProps, {\n            components: {\n              Container: MultiValueContainer,\n              Label: MultiValueLabel,\n              Remove: MultiValueRemove\n            },\n            isFocused: isOptionFocused,\n            isDisabled: isDisabled,\n            key: _this4.getOptionValue(opt),\n            removeProps: {\n              onClick: function onClick() {\n                return _this4.removeValue(opt);\n              },\n              onTouchEnd: function onTouchEnd() {\n                return _this4.removeValue(opt);\n              },\n              onMouseDown: function onMouseDown(e) {\n                e.preventDefault();\n                e.stopPropagation();\n              }\n            },\n            data: opt\n          }), _this4.formatOptionLabel(opt, 'value'));\n        });\n        return selectValues;\n      }\n\n      if (inputValue) {\n        return null;\n      }\n\n      var singleValue = selectValue[0];\n      return React.createElement(SingleValue, _extends({}, commonProps, {\n        data: singleValue,\n        isDisabled: isDisabled\n      }), this.formatOptionLabel(singleValue, 'value'));\n    }\n  }, {\n    key: \"renderClearIndicator\",\n    value: function renderClearIndicator() {\n      var ClearIndicator = this.components.ClearIndicator;\n      var commonProps = this.commonProps;\n      var _this$props16 = this.props,\n          isDisabled = _this$props16.isDisabled,\n          isLoading = _this$props16.isLoading;\n      var isFocused = this.state.isFocused;\n\n      if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n        return null;\n      }\n\n      var innerProps = {\n        onMouseDown: this.onClearIndicatorMouseDown,\n        onTouchEnd: this.onClearIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return React.createElement(ClearIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderLoadingIndicator\",\n    value: function renderLoadingIndicator() {\n      var LoadingIndicator = this.components.LoadingIndicator;\n      var commonProps = this.commonProps;\n      var _this$props17 = this.props,\n          isDisabled = _this$props17.isDisabled,\n          isLoading = _this$props17.isLoading;\n      var isFocused = this.state.isFocused;\n      if (!LoadingIndicator || !isLoading) return null;\n      var innerProps = {\n        'aria-hidden': 'true'\n      };\n      return React.createElement(LoadingIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderIndicatorSeparator\",\n    value: function renderIndicatorSeparator() {\n      var _this$components2 = this.components,\n          DropdownIndicator = _this$components2.DropdownIndicator,\n          IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n      if (!DropdownIndicator || !IndicatorSeparator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      return React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderDropdownIndicator\",\n    value: function renderDropdownIndicator() {\n      var DropdownIndicator = this.components.DropdownIndicator;\n      if (!DropdownIndicator) return null;\n      var commonProps = this.commonProps;\n      var isDisabled = this.props.isDisabled;\n      var isFocused = this.state.isFocused;\n      var innerProps = {\n        onMouseDown: this.onDropdownIndicatorMouseDown,\n        onTouchEnd: this.onDropdownIndicatorTouchEnd,\n        'aria-hidden': 'true'\n      };\n      return React.createElement(DropdownIndicator, _extends({}, commonProps, {\n        innerProps: innerProps,\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }));\n    }\n  }, {\n    key: \"renderMenu\",\n    value: function renderMenu() {\n      var _this5 = this;\n\n      var _this$components3 = this.components,\n          Group = _this$components3.Group,\n          GroupHeading = _this$components3.GroupHeading,\n          Menu$$1 = _this$components3.Menu,\n          MenuList$$1 = _this$components3.MenuList,\n          MenuPortal$$1 = _this$components3.MenuPortal,\n          LoadingMessage$$1 = _this$components3.LoadingMessage,\n          NoOptionsMessage$$1 = _this$components3.NoOptionsMessage,\n          Option = _this$components3.Option;\n      var commonProps = this.commonProps;\n      var _this$state9 = this.state,\n          focusedOption = _this$state9.focusedOption,\n          menuOptions = _this$state9.menuOptions;\n      var _this$props18 = this.props,\n          captureMenuScroll = _this$props18.captureMenuScroll,\n          inputValue = _this$props18.inputValue,\n          isLoading = _this$props18.isLoading,\n          loadingMessage = _this$props18.loadingMessage,\n          minMenuHeight = _this$props18.minMenuHeight,\n          maxMenuHeight = _this$props18.maxMenuHeight,\n          menuIsOpen = _this$props18.menuIsOpen,\n          menuPlacement = _this$props18.menuPlacement,\n          menuPosition = _this$props18.menuPosition,\n          menuPortalTarget = _this$props18.menuPortalTarget,\n          menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n          menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n          noOptionsMessage = _this$props18.noOptionsMessage,\n          onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n          onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n      if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n      var render = function render(props) {\n        // for performance, the menu options in state aren't changed when the\n        // focused option changes so we calculate additional props based on that\n        var isFocused = focusedOption === props.data;\n        props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n        return React.createElement(Option, _extends({}, commonProps, props, {\n          isFocused: isFocused\n        }), _this5.formatOptionLabel(props.data, 'menu'));\n      };\n\n      var menuUI;\n\n      if (this.hasOptions()) {\n        menuUI = menuOptions.render.map(function (item) {\n          if (item.type === 'group') {\n            var type = item.type,\n                group = _objectWithoutProperties(item, [\"type\"]);\n\n            var headingId = \"\".concat(item.key, \"-heading\");\n            return React.createElement(Group, _extends({}, commonProps, group, {\n              Heading: GroupHeading,\n              headingProps: {\n                id: headingId\n              },\n              label: _this5.formatGroupLabel(item.data)\n            }), item.options.map(function (option) {\n              return render(option);\n            }));\n          } else if (item.type === 'option') {\n            return render(item);\n          }\n        });\n      } else if (isLoading) {\n        var message = loadingMessage({\n          inputValue: inputValue\n        });\n        if (message === null) return null;\n        menuUI = React.createElement(LoadingMessage$$1, commonProps, message);\n      } else {\n        var _message = noOptionsMessage({\n          inputValue: inputValue\n        });\n\n        if (_message === null) return null;\n        menuUI = React.createElement(NoOptionsMessage$$1, commonProps, _message);\n      }\n\n      var menuPlacementProps = {\n        minMenuHeight: minMenuHeight,\n        maxMenuHeight: maxMenuHeight,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition,\n        menuShouldScrollIntoView: menuShouldScrollIntoView\n      };\n      var menuElement = React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref6) {\n        var ref = _ref6.ref,\n            _ref6$placerProps = _ref6.placerProps,\n            placement = _ref6$placerProps.placement,\n            maxHeight = _ref6$placerProps.maxHeight;\n        return React.createElement(Menu$$1, _extends({}, commonProps, menuPlacementProps, {\n          innerRef: ref,\n          innerProps: {\n            onMouseDown: _this5.onMenuMouseDown,\n            onMouseMove: _this5.onMenuMouseMove\n          },\n          isLoading: isLoading,\n          placement: placement\n        }), React.createElement(ScrollCaptorSwitch, {\n          isEnabled: captureMenuScroll,\n          onTopArrive: onMenuScrollToTop,\n          onBottomArrive: onMenuScrollToBottom\n        }, React.createElement(ScrollBlock, {\n          isEnabled: menuShouldBlockScroll\n        }, React.createElement(MenuList$$1, _extends({}, commonProps, {\n          innerRef: _this5.getMenuListRef,\n          isLoading: isLoading,\n          maxHeight: maxHeight\n        }), menuUI))));\n      }); // positioning behaviour is almost identical for portalled and fixed,\n      // so we use the same component. the actual portalling logic is forked\n      // within the component based on `menuPosition`\n\n      return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal$$1, _extends({}, commonProps, {\n        appendTo: menuPortalTarget,\n        controlElement: this.controlRef,\n        menuPlacement: menuPlacement,\n        menuPosition: menuPosition\n      }), menuElement) : menuElement;\n    }\n  }, {\n    key: \"renderFormField\",\n    value: function renderFormField() {\n      var _this6 = this;\n\n      var _this$props19 = this.props,\n          delimiter = _this$props19.delimiter,\n          isDisabled = _this$props19.isDisabled,\n          isMulti = _this$props19.isMulti,\n          name = _this$props19.name;\n      var selectValue = this.state.selectValue;\n      if (!name || isDisabled) return;\n\n      if (isMulti) {\n        if (delimiter) {\n          var value = selectValue.map(function (opt) {\n            return _this6.getOptionValue(opt);\n          }).join(delimiter);\n          return React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\",\n            value: value\n          });\n        } else {\n          var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n            return React.createElement(\"input\", {\n              key: \"i-\".concat(i),\n              name: name,\n              type: \"hidden\",\n              value: _this6.getOptionValue(opt)\n            });\n          }) : React.createElement(\"input\", {\n            name: name,\n            type: \"hidden\"\n          });\n          return React.createElement(\"div\", null, input);\n        }\n      } else {\n        var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n        return React.createElement(\"input\", {\n          name: name,\n          type: \"hidden\",\n          value: _value\n        });\n      }\n    }\n  }, {\n    key: \"renderLiveRegion\",\n    value: function renderLiveRegion() {\n      if (!this.state.isFocused) return null;\n      return React.createElement(A11yText, {\n        \"aria-live\": \"assertive\"\n      }, React.createElement(\"p\", {\n        id: \"aria-selection-event\"\n      }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n        id: \"aria-context\"\n      }, \"\\xA0\", this.constructAriaLiveMessage()));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$components4 = this.components,\n          Control = _this$components4.Control,\n          IndicatorsContainer = _this$components4.IndicatorsContainer,\n          SelectContainer = _this$components4.SelectContainer,\n          ValueContainer = _this$components4.ValueContainer;\n      var _this$props20 = this.props,\n          className = _this$props20.className,\n          id = _this$props20.id,\n          isDisabled = _this$props20.isDisabled,\n          menuIsOpen = _this$props20.menuIsOpen;\n      var isFocused = this.state.isFocused;\n      var commonProps = this.commonProps = this.getCommonProps();\n      return React.createElement(SelectContainer, _extends({}, commonProps, {\n        className: className,\n        innerProps: {\n          id: id,\n          onKeyDown: this.onKeyDown\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused\n      }), this.renderLiveRegion(), React.createElement(Control, _extends({}, commonProps, {\n        innerRef: this.getControlRef,\n        innerProps: {\n          onMouseDown: this.onControlMouseDown,\n          onTouchEnd: this.onControlTouchEnd\n        },\n        isDisabled: isDisabled,\n        isFocused: isFocused,\n        menuIsOpen: menuIsOpen\n      }), React.createElement(ValueContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n        isDisabled: isDisabled\n      }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n    }\n  }]);\n\n  return Select;\n}(Component);\n\n_defineProperty(Select, \"defaultProps\", defaultProps);\n\nvar defaultProps$1 = {\n  defaultInputValue: '',\n  defaultMenuIsOpen: false,\n  defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_Component) {\n    _inherits(StateManager, _Component);\n\n    function StateManager() {\n      var _getPrototypeOf2;\n\n      var _this;\n\n      _classCallCheck(this, StateManager);\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StateManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n        inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n        menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n        value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (value, actionMeta) {\n        _this.callProp('onChange', value, actionMeta);\n\n        _this.setState({\n          value: value\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputChange\", function (value, actionMeta) {\n        // TODO: for backwards compatibility, we allow the prop to return a new\n        // value, but now inputValue is a controllable prop we probably shouldn't\n        var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n        _this.setState({\n          inputValue: newValue !== undefined ? newValue : value\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuOpen\", function () {\n        _this.callProp('onMenuOpen');\n\n        _this.setState({\n          menuIsOpen: true\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuClose\", function () {\n        _this.callProp('onMenuClose');\n\n        _this.setState({\n          menuIsOpen: false\n        });\n      });\n\n      return _this;\n    }\n\n    _createClass(StateManager, [{\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      } // FIXME: untyped flow code, return any\n\n    }, {\n      key: \"getProp\",\n      value: function getProp(key) {\n        return this.props[key] !== undefined ? this.props[key] : this.state[key];\n      } // FIXME: untyped flow code, return any\n\n    }, {\n      key: \"callProp\",\n      value: function callProp(name) {\n        if (typeof this.props[name] === 'function') {\n          var _this$props;\n\n          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n\n          return (_this$props = this.props)[name].apply(_this$props, args);\n        }\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        var _this$props2 = this.props,\n            defaultInputValue = _this$props2.defaultInputValue,\n            defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n            defaultValue = _this$props2.defaultValue,\n            props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n        return React.createElement(SelectComponent, _extends({}, props, {\n          ref: function ref(_ref) {\n            _this2.select = _ref;\n          },\n          inputValue: this.getProp('inputValue'),\n          menuIsOpen: this.getProp('menuIsOpen'),\n          onChange: this.onChange,\n          onInputChange: this.onInputChange,\n          onMenuClose: this.onMenuClose,\n          onMenuOpen: this.onMenuOpen,\n          value: this.getProp('value')\n        }));\n      }\n    }]);\n\n    return StateManager;\n  }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$1), _temp;\n};\n\nvar defaultProps$2 = {\n  cacheOptions: false,\n  defaultOptions: false,\n  filterOption: null\n};\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_Component) {\n    _inherits(Async, _Component);\n\n    function Async(props) {\n      var _this;\n\n      _classCallCheck(this, Async);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(Async).call(this));\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastRequest\", void 0);\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"mounted\", false);\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"optionsCache\", {});\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (newValue, actionMeta) {\n        var _this$props = _this.props,\n            cacheOptions = _this$props.cacheOptions,\n            onInputChange = _this$props.onInputChange; // TODO\n\n        var inputValue = handleInputChange(newValue, actionMeta, onInputChange);\n\n        if (!inputValue) {\n          delete _this.lastRequest;\n\n          _this.setState({\n            inputValue: '',\n            loadedInputValue: '',\n            loadedOptions: [],\n            isLoading: false,\n            passEmptyOptions: false\n          });\n\n          return;\n        }\n\n        if (cacheOptions && _this.optionsCache[inputValue]) {\n          _this.setState({\n            inputValue: inputValue,\n            loadedInputValue: inputValue,\n            loadedOptions: _this.optionsCache[inputValue],\n            isLoading: false,\n            passEmptyOptions: false\n          });\n        } else {\n          var request = _this.lastRequest = {};\n\n          _this.setState({\n            inputValue: inputValue,\n            isLoading: true,\n            passEmptyOptions: !_this.state.loadedInputValue\n          }, function () {\n            _this.loadOptions(inputValue, function (options) {\n              if (!_this.mounted) return;\n\n              if (options) {\n                _this.optionsCache[inputValue] = options;\n              }\n\n              if (request !== _this.lastRequest) return;\n              delete _this.lastRequest;\n\n              _this.setState({\n                isLoading: false,\n                loadedInputValue: inputValue,\n                loadedOptions: options || [],\n                passEmptyOptions: false\n              });\n            });\n          });\n        }\n\n        return inputValue;\n      });\n\n      _this.state = {\n        defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,\n        inputValue: typeof props.inputValue !== 'undefined' ? props.inputValue : '',\n        isLoading: props.defaultOptions === true ? true : false,\n        loadedOptions: [],\n        passEmptyOptions: false\n      };\n      return _this;\n    }\n\n    _createClass(Async, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var _this2 = this;\n\n        this.mounted = true;\n        var defaultOptions = this.props.defaultOptions;\n        var inputValue = this.state.inputValue;\n\n        if (defaultOptions === true) {\n          this.loadOptions(inputValue, function (options) {\n            if (!_this2.mounted) return;\n            var isLoading = !!_this2.lastRequest;\n\n            _this2.setState({\n              defaultOptions: options || [],\n              isLoading: isLoading\n            });\n          });\n        }\n      }\n    }, {\n      key: \"componentWillReceiveProps\",\n      value: function componentWillReceiveProps(nextProps) {\n        // if the cacheOptions prop changes, clear the cache\n        if (nextProps.cacheOptions !== this.props.cacheOptions) {\n          this.optionsCache = {};\n        }\n\n        if (nextProps.defaultOptions !== this.props.defaultOptions) {\n          this.setState({\n            defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined\n          });\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.mounted = false;\n      }\n    }, {\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: \"loadOptions\",\n      value: function loadOptions(inputValue, callback) {\n        var loadOptions = this.props.loadOptions;\n        if (!loadOptions) return callback();\n        var loader = loadOptions(inputValue, callback);\n\n        if (loader && typeof loader.then === 'function') {\n          loader.then(callback, function () {\n            return callback();\n          });\n        }\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this3 = this;\n\n        var _this$props2 = this.props,\n            loadOptions = _this$props2.loadOptions,\n            props = _objectWithoutProperties(_this$props2, [\"loadOptions\"]);\n\n        var _this$state = this.state,\n            defaultOptions = _this$state.defaultOptions,\n            inputValue = _this$state.inputValue,\n            isLoading = _this$state.isLoading,\n            loadedInputValue = _this$state.loadedInputValue,\n            loadedOptions = _this$state.loadedOptions,\n            passEmptyOptions = _this$state.passEmptyOptions;\n        var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n        return React.createElement(SelectComponent, _extends({}, props, {\n          ref: function ref(_ref) {\n            _this3.select = _ref;\n          },\n          options: options,\n          isLoading: isLoading,\n          onInputChange: this.handleInputChange\n        }));\n      }\n    }]);\n\n    return Async;\n  }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$2), _temp;\n};\nvar SelectState = manageState(Select);\nvar Async = makeAsyncSelect(SelectState);\n\nvar compareOption = function compareOption() {\n  var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var option = arguments.length > 1 ? arguments[1] : undefined;\n  var candidate = String(inputValue).toLowerCase();\n  var optionValue = String(option.value).toLowerCase();\n  var optionLabel = String(option.label).toLowerCase();\n  return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n  formatCreateLabel: function formatCreateLabel(inputValue) {\n    return \"Create \\\"\".concat(inputValue, \"\\\"\");\n  },\n  isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n    return !(!inputValue || selectValue.some(function (option) {\n      return compareOption(inputValue, option);\n    }) || selectOptions.some(function (option) {\n      return compareOption(inputValue, option);\n    }));\n  },\n  getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n    return {\n      label: optionLabel,\n      value: inputValue,\n      __isNew__: true\n    };\n  }\n};\nvar defaultProps$3 = _objectSpread({\n  allowCreateWhileLoading: false,\n  createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n  var _class, _temp;\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_Component) {\n    _inherits(Creatable, _Component);\n\n    function Creatable(props) {\n      var _this;\n\n      _classCallCheck(this, Creatable);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(Creatable).call(this, props));\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n        var _this$props = _this.props,\n            getNewOptionData = _this$props.getNewOptionData,\n            inputValue = _this$props.inputValue,\n            isMulti = _this$props.isMulti,\n            onChange = _this$props.onChange,\n            onCreateOption = _this$props.onCreateOption,\n            value = _this$props.value;\n\n        if (actionMeta.action !== 'select-option') {\n          return onChange(newValue, actionMeta);\n        }\n\n        var newOption = _this.state.newOption;\n        var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n        if (valueArray[valueArray.length - 1] === newOption) {\n          if (onCreateOption) onCreateOption(inputValue);else {\n            var newOptionData = getNewOptionData(inputValue, inputValue);\n            var newActionMeta = {\n              action: 'create-option'\n            };\n\n            if (isMulti) {\n              onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n            } else {\n              onChange(newOptionData, newActionMeta);\n            }\n          }\n          return;\n        }\n\n        onChange(newValue, actionMeta);\n      });\n\n      var options = props.options || [];\n      _this.state = {\n        newOption: undefined,\n        options: options\n      };\n      return _this;\n    }\n\n    _createClass(Creatable, [{\n      key: \"componentWillReceiveProps\",\n      value: function componentWillReceiveProps(nextProps) {\n        var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n            createOptionPosition = nextProps.createOptionPosition,\n            formatCreateLabel = nextProps.formatCreateLabel,\n            getNewOptionData = nextProps.getNewOptionData,\n            inputValue = nextProps.inputValue,\n            isLoading = nextProps.isLoading,\n            isValidNewOption = nextProps.isValidNewOption,\n            value = nextProps.value;\n        var options = nextProps.options || [];\n        var newOption = this.state.newOption;\n\n        if (isValidNewOption(inputValue, cleanValue(value), options)) {\n          newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n        } else {\n          newOption = undefined;\n        }\n\n        this.setState({\n          newOption: newOption,\n          options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n        });\n      }\n    }, {\n      key: \"focus\",\n      value: function focus() {\n        this.select.focus();\n      }\n    }, {\n      key: \"blur\",\n      value: function blur() {\n        this.select.blur();\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n\n        var props = _extends({}, this.props);\n\n        var options = this.state.options;\n        return React.createElement(SelectComponent, _extends({}, props, {\n          ref: function ref(_ref) {\n            _this2.select = _ref;\n          },\n          options: options,\n          onChange: this.onChange\n        }));\n      }\n    }]);\n\n    return Creatable;\n  }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$3), _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nvar SelectCreatable$1 = makeCreatableSelect(Select);\nvar SelectCreatableState = manageState(SelectCreatable$1);\nvar AsyncCreatable = makeAsyncSelect(SelectCreatableState);\n\n// strip transition props off before spreading onto select component\n// note we need to be explicit about innerRef for flow\nvar AnimatedInput = function AnimatedInput(WrappedComponent) {\n  return function (_ref) {\n    var inProp = _ref.in,\n        onExited = _ref.onExited,\n        appear = _ref.appear,\n        enter = _ref.enter,\n        exit = _ref.exit,\n        props = _objectWithoutProperties(_ref, [\"in\", \"onExited\", \"appear\", \"enter\", \"exit\"]);\n\n    return React.createElement(WrappedComponent, props);\n  };\n};\n\nvar Fade = function Fade(_ref) {\n  var Tag = _ref.component,\n      _ref$duration = _ref.duration,\n      duration = _ref$duration === void 0 ? 1 : _ref$duration,\n      inProp = _ref.in,\n      onExited = _ref.onExited,\n      props = _objectWithoutProperties(_ref, [\"component\", \"duration\", \"in\", \"onExited\"]);\n\n  var transition = {\n    entering: {\n      opacity: 0\n    },\n    entered: {\n      opacity: 1,\n      transition: \"opacity \".concat(duration, \"ms\")\n    },\n    exiting: {\n      opacity: 0\n    },\n    exited: {\n      opacity: 0\n    }\n  };\n  return React.createElement(Transition, {\n    mountOnEnter: true,\n    unmountOnExit: true,\n    in: inProp,\n    timeout: duration\n  }, function (state) {\n    var innerProps = {\n      style: _objectSpread({}, transition[state])\n    };\n    return React.createElement(Tag, _extends({\n      innerProps: innerProps\n    }, props));\n  });\n}; // ==============================\n// Collapse Transition\n// ==============================\n\nvar collapseDuration = 260;\n// wrap each MultiValue with a collapse transition; decreases width until\n// finally removing from DOM\nvar Collapse =\n/*#__PURE__*/\nfunction (_Component) {\n  _inherits(Collapse, _Component);\n\n  function Collapse() {\n    var _getPrototypeOf2;\n\n    var _this;\n\n    _classCallCheck(this, Collapse);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Collapse)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"duration\", collapseDuration);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"rafID\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n      width: 'auto'\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"transition\", {\n      exiting: {\n        width: 0,\n        transition: \"width \".concat(_this.duration, \"ms ease-out\")\n      },\n      exited: {\n        width: 0\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getWidth\", function (ref) {\n      if (ref && isNaN(_this.state.width)) {\n        /*\n          Here we're invoking requestAnimationFrame with a callback invoking our\n          call to getBoundingClientRect and setState in order to resolve an edge case\n          around portalling. Certain portalling solutions briefly remove children from the DOM\n          before appending them to the target node. This is to avoid us trying to call getBoundingClientrect\n          while the Select component is in this state.\n        */\n        // cannot use `offsetWidth` because it is rounded\n        _this.rafID = window.requestAnimationFrame(function () {\n          var _ref$getBoundingClien = ref.getBoundingClientRect(),\n              width = _ref$getBoundingClien.width;\n\n          _this.setState({\n            width: width\n          });\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyle\", function (width) {\n      return {\n        overflow: 'hidden',\n        whiteSpace: 'nowrap',\n        width: width\n      };\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTransition\", function (state) {\n      return _this.transition[state];\n    });\n\n    return _this;\n  }\n\n  _createClass(Collapse, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.rafID) {\n        window.cancelAnimationFrame(this.rafID);\n      }\n    } // width must be calculated; cannot transition from `undefined` to `number`\n\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          children = _this$props.children,\n          inProp = _this$props.in;\n      var width = this.state.width;\n      return React.createElement(Transition, {\n        enter: false,\n        mountOnEnter: true,\n        unmountOnExit: true,\n        in: inProp,\n        timeout: this.duration\n      }, function (state) {\n        var style = _objectSpread({}, _this2.getStyle(width), _this2.getTransition(state));\n\n        return React.createElement(\"div\", {\n          ref: _this2.getWidth,\n          style: style\n        }, children);\n      });\n    }\n  }]);\n\n  return Collapse;\n}(Component);\n\nvar AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) {\n  return function (_ref) {\n    var inProp = _ref.in,\n        onExited = _ref.onExited,\n        props = _objectWithoutProperties(_ref, [\"in\", \"onExited\"]);\n\n    return React.createElement(Collapse, {\n      in: inProp,\n      onExited: onExited\n    }, React.createElement(WrappedComponent, _extends({\n      cropWithEllipsis: inProp\n    }, props)));\n  };\n};\n\nvar AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) {\n  return function (props) {\n    return React.createElement(Fade, _extends({\n      component: WrappedComponent,\n      duration: props.isMulti ? collapseDuration : 1\n    }, props));\n  };\n};\n\nvar AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) {\n  return function (props) {\n    return React.createElement(Fade, _extends({\n      component: WrappedComponent\n    }, props));\n  };\n};\n\n// make ValueContainer a transition group\nvar AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) {\n  return function (props) {\n    return React.createElement(TransitionGroup, _extends({\n      component: WrappedComponent\n    }, props));\n  };\n};\n\nvar makeAnimated = function makeAnimated() {\n  var externalComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var components$$1 = defaultComponents({\n    components: externalComponents\n  });\n\n  var Input = components$$1.Input,\n      MultiValue = components$$1.MultiValue,\n      Placeholder = components$$1.Placeholder,\n      SingleValue = components$$1.SingleValue,\n      ValueContainer = components$$1.ValueContainer,\n      rest = _objectWithoutProperties(components$$1, [\"Input\", \"MultiValue\", \"Placeholder\", \"SingleValue\", \"ValueContainer\"]);\n\n  return _objectSpread({\n    Input: AnimatedInput(Input),\n    MultiValue: AnimatedMultiValue(MultiValue),\n    Placeholder: AnimatedPlaceholder(Placeholder),\n    SingleValue: AnimatedSingleValue(SingleValue),\n    ValueContainer: AnimatedValueContainer(ValueContainer)\n  }, rest);\n};\n\nvar AnimatedComponents = makeAnimated();\nvar Input$1 = AnimatedComponents.Input;\nvar MultiValue$1 = AnimatedComponents.MultiValue;\nvar Placeholder$1 = AnimatedComponents.Placeholder;\nvar SingleValue$1 = AnimatedComponents.SingleValue;\nvar ValueContainer$1 = AnimatedComponents.ValueContainer;\nvar index = memoizeOne(makeAnimated, exportedEqual);\n\nvar index$1 = manageState(Select);\n\nexport default index$1;\nexport { Select as SelectBase, Async, makeAsyncSelect, AsyncCreatable, Creatable, makeCreatableSelect, createFilter, index as makeAnimated, components, mergeStyles, defaultTheme };\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n  Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n}\n\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n  var printWarning = function printWarning(format) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function warning(condition, format) {\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (format.indexOf('Failed Composite propType: ') === 0) {\n      return; // Ignore CompositeComponent proptype check.\n    }\n\n    if (!condition) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n\n      printWarning.apply(undefined, [format].concat(args));\n    }\n  };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n  ReactPropTypeLocationNames = {\n    prop: 'prop',\n    context: 'context',\n    childContext: 'child context'\n  };\n} else {\n  ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n  /**\n   * Policies that describe methods in `ReactClassInterface`.\n   */\n\n  var injectedMixins = [];\n\n  /**\n   * Composite components are higher-level components that compose other composite\n   * or host components.\n   *\n   * To create a new type of `ReactClass`, pass a specification of\n   * your new class to `React.createClass`. The only requirement of your class\n   * specification is that you implement a `render` method.\n   *\n   *   var MyComponent = React.createClass({\n   *     render: function() {\n   *       return <div>Hello World</div>;\n   *     }\n   *   });\n   *\n   * The class specification supports a specific protocol of methods that have\n   * special meaning (e.g. `render`). See `ReactClassInterface` for\n   * more the comprehensive protocol. Any other properties and methods in the\n   * class specification will be available on the prototype.\n   *\n   * @interface ReactClassInterface\n   * @internal\n   */\n  var ReactClassInterface = {\n    /**\n     * An array of Mixin objects to include when defining your component.\n     *\n     * @type {array}\n     * @optional\n     */\n    mixins: 'DEFINE_MANY',\n\n    /**\n     * An object containing properties and methods that should be defined on\n     * the component's constructor instead of its prototype (static methods).\n     *\n     * @type {object}\n     * @optional\n     */\n    statics: 'DEFINE_MANY',\n\n    /**\n     * Definition of prop types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    propTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    contextTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types this component sets for its children.\n     *\n     * @type {object}\n     * @optional\n     */\n    childContextTypes: 'DEFINE_MANY',\n\n    // ==== Definition methods ====\n\n    /**\n     * Invoked when the component is mounted. Values in the mapping will be set on\n     * `this.props` if that prop is not specified (i.e. using an `in` check).\n     *\n     * This method is invoked before `getInitialState` and therefore cannot rely\n     * on `this.state` or use `this.setState`.\n     *\n     * @return {object}\n     * @optional\n     */\n    getDefaultProps: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Invoked once before the component is mounted. The return value will be used\n     * as the initial value of `this.state`.\n     *\n     *   getInitialState: function() {\n     *     return {\n     *       isOn: false,\n     *       fooBaz: new BazFoo()\n     *     }\n     *   }\n     *\n     * @return {object}\n     * @optional\n     */\n    getInitialState: 'DEFINE_MANY_MERGED',\n\n    /**\n     * @return {object}\n     * @optional\n     */\n    getChildContext: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Uses props from `this.props` and state from `this.state` to render the\n     * structure of the component.\n     *\n     * No guarantees are made about when or how often this method is invoked, so\n     * it must not have side effects.\n     *\n     *   render: function() {\n     *     var name = this.props.name;\n     *     return <div>Hello, {name}!</div>;\n     *   }\n     *\n     * @return {ReactComponent}\n     * @required\n     */\n    render: 'DEFINE_ONCE',\n\n    // ==== Delegate methods ====\n\n    /**\n     * Invoked when the component is initially created and about to be mounted.\n     * This may have side effects, but any external subscriptions or data created\n     * by this method must be cleaned up in `componentWillUnmount`.\n     *\n     * @optional\n     */\n    componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component has been mounted and has a DOM representation.\n     * However, there is no guarantee that the DOM node is in the document.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been mounted (initialized and rendered) for the first time.\n     *\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked before the component receives new props.\n     *\n     * Use this as an opportunity to react to a prop transition by updating the\n     * state using `this.setState`. Current props are accessed via `this.props`.\n     *\n     *   componentWillReceiveProps: function(nextProps, nextContext) {\n     *     this.setState({\n     *       likesIncreasing: nextProps.likeCount > this.props.likeCount\n     *     });\n     *   }\n     *\n     * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n     * transition may cause a state change, but the opposite is not true. If you\n     * need it, you are probably looking for `componentWillUpdate`.\n     *\n     * @param {object} nextProps\n     * @optional\n     */\n    componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Invoked while deciding if the component should be updated as a result of\n     * receiving new props, state and/or context.\n     *\n     * Use this as an opportunity to `return false` when you're certain that the\n     * transition to the new props/state/context will not require a component\n     * update.\n     *\n     *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n     *     return !equal(nextProps, this.props) ||\n     *       !equal(nextState, this.state) ||\n     *       !equal(nextContext, this.context);\n     *   }\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @return {boolean} True if the component should update.\n     * @optional\n     */\n    shouldComponentUpdate: 'DEFINE_ONCE',\n\n    /**\n     * Invoked when the component is about to update due to a transition from\n     * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n     * and `nextContext`.\n     *\n     * Use this as an opportunity to perform preparation before an update occurs.\n     *\n     * NOTE: You **cannot** use `this.setState()` in this method.\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @param {ReactReconcileTransaction} transaction\n     * @optional\n     */\n    componentWillUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component's DOM representation has been updated.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been updated.\n     *\n     * @param {object} prevProps\n     * @param {?object} prevState\n     * @param {?object} prevContext\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component is about to be removed from its parent and have\n     * its DOM representation destroyed.\n     *\n     * Use this as an opportunity to deallocate any external resources.\n     *\n     * NOTE: There is no `componentDidUnmount` since your component will have been\n     * destroyed by that point.\n     *\n     * @optional\n     */\n    componentWillUnmount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillMount`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillReceiveProps`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillUpdate`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n    // ==== Advanced methods ====\n\n    /**\n     * Updates the component's currently mounted DOM representation.\n     *\n     * By default, this implements React's rendering and reconciliation algorithm.\n     * Sophisticated clients may wish to override this.\n     *\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     * @overridable\n     */\n    updateComponent: 'OVERRIDE_BASE'\n  };\n\n  /**\n   * Similar to ReactClassInterface but for static methods.\n   */\n  var ReactClassStaticInterface = {\n    /**\n     * This method is invoked after a component is instantiated and when it\n     * receives new props. Return an object to update state in response to\n     * prop changes. Return null to indicate no change to state.\n     *\n     * If an object is returned, its keys will be merged into the existing state.\n     *\n     * @return {object || null}\n     * @optional\n     */\n    getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n  };\n\n  /**\n   * Mapping from class specification keys to special processing functions.\n   *\n   * Although these are declared like instance properties in the specification\n   * when defining classes using `React.createClass`, they are actually static\n   * and are accessible on the constructor instead of the prototype. Despite\n   * being static, they must be defined outside of the \"statics\" key under\n   * which all other static methods are defined.\n   */\n  var RESERVED_SPEC_KEYS = {\n    displayName: function(Constructor, displayName) {\n      Constructor.displayName = displayName;\n    },\n    mixins: function(Constructor, mixins) {\n      if (mixins) {\n        for (var i = 0; i < mixins.length; i++) {\n          mixSpecIntoComponent(Constructor, mixins[i]);\n        }\n      }\n    },\n    childContextTypes: function(Constructor, childContextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, childContextTypes, 'childContext');\n      }\n      Constructor.childContextTypes = _assign(\n        {},\n        Constructor.childContextTypes,\n        childContextTypes\n      );\n    },\n    contextTypes: function(Constructor, contextTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, contextTypes, 'context');\n      }\n      Constructor.contextTypes = _assign(\n        {},\n        Constructor.contextTypes,\n        contextTypes\n      );\n    },\n    /**\n     * Special case getDefaultProps which should move into statics but requires\n     * automatic merging.\n     */\n    getDefaultProps: function(Constructor, getDefaultProps) {\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps = createMergedResultFunction(\n          Constructor.getDefaultProps,\n          getDefaultProps\n        );\n      } else {\n        Constructor.getDefaultProps = getDefaultProps;\n      }\n    },\n    propTypes: function(Constructor, propTypes) {\n      if (process.env.NODE_ENV !== 'production') {\n        validateTypeDef(Constructor, propTypes, 'prop');\n      }\n      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n    },\n    statics: function(Constructor, statics) {\n      mixStaticSpecIntoComponent(Constructor, statics);\n    },\n    autobind: function() {}\n  };\n\n  function validateTypeDef(Constructor, typeDef, location) {\n    for (var propName in typeDef) {\n      if (typeDef.hasOwnProperty(propName)) {\n        // use a warning instead of an _invariant so components\n        // don't show up in prod but only in __DEV__\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            typeof typeDef[propName] === 'function',\n            '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n              'React.PropTypes.',\n            Constructor.displayName || 'ReactClass',\n            ReactPropTypeLocationNames[location],\n            propName\n          );\n        }\n      }\n    }\n  }\n\n  function validateMethodOverride(isAlreadyDefined, name) {\n    var specPolicy = ReactClassInterface.hasOwnProperty(name)\n      ? ReactClassInterface[name]\n      : null;\n\n    // Disallow overriding of base class methods unless explicitly allowed.\n    if (ReactClassMixin.hasOwnProperty(name)) {\n      _invariant(\n        specPolicy === 'OVERRIDE_BASE',\n        'ReactClassInterface: You are attempting to override ' +\n          '`%s` from your class specification. Ensure that your method names ' +\n          'do not overlap with React methods.',\n        name\n      );\n    }\n\n    // Disallow defining methods more than once unless explicitly allowed.\n    if (isAlreadyDefined) {\n      _invariant(\n        specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n        'ReactClassInterface: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be due ' +\n          'to a mixin.',\n        name\n      );\n    }\n  }\n\n  /**\n   * Mixin helper which handles policy validation and reserved\n   * specification keys when building React classes.\n   */\n  function mixSpecIntoComponent(Constructor, spec) {\n    if (!spec) {\n      if (process.env.NODE_ENV !== 'production') {\n        var typeofSpec = typeof spec;\n        var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            isMixinValid,\n            \"%s: You're attempting to include a mixin that is either null \" +\n              'or not an object. Check the mixins included by the component, ' +\n              'as well as any mixins they include themselves. ' +\n              'Expected object but got %s.',\n            Constructor.displayName || 'ReactClass',\n            spec === null ? null : typeofSpec\n          );\n        }\n      }\n\n      return;\n    }\n\n    _invariant(\n      typeof spec !== 'function',\n      \"ReactClass: You're attempting to \" +\n        'use a component class or function as a mixin. Instead, just use a ' +\n        'regular object.'\n    );\n    _invariant(\n      !isValidElement(spec),\n      \"ReactClass: You're attempting to \" +\n        'use a component as a mixin. Instead, just use a regular object.'\n    );\n\n    var proto = Constructor.prototype;\n    var autoBindPairs = proto.__reactAutoBindPairs;\n\n    // By handling mixins before any other properties, we ensure the same\n    // chaining order is applied to methods with DEFINE_MANY policy, whether\n    // mixins are listed before or after these methods in the spec.\n    if (spec.hasOwnProperty(MIXINS_KEY)) {\n      RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n    }\n\n    for (var name in spec) {\n      if (!spec.hasOwnProperty(name)) {\n        continue;\n      }\n\n      if (name === MIXINS_KEY) {\n        // We have already handled mixins in a special case above.\n        continue;\n      }\n\n      var property = spec[name];\n      var isAlreadyDefined = proto.hasOwnProperty(name);\n      validateMethodOverride(isAlreadyDefined, name);\n\n      if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n        RESERVED_SPEC_KEYS[name](Constructor, property);\n      } else {\n        // Setup methods on prototype:\n        // The following member methods should not be automatically bound:\n        // 1. Expected ReactClass methods (in the \"interface\").\n        // 2. Overridden methods (that were mixed in).\n        var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n        var isFunction = typeof property === 'function';\n        var shouldAutoBind =\n          isFunction &&\n          !isReactClassMethod &&\n          !isAlreadyDefined &&\n          spec.autobind !== false;\n\n        if (shouldAutoBind) {\n          autoBindPairs.push(name, property);\n          proto[name] = property;\n        } else {\n          if (isAlreadyDefined) {\n            var specPolicy = ReactClassInterface[name];\n\n            // These cases should already be caught by validateMethodOverride.\n            _invariant(\n              isReactClassMethod &&\n                (specPolicy === 'DEFINE_MANY_MERGED' ||\n                  specPolicy === 'DEFINE_MANY'),\n              'ReactClass: Unexpected spec policy %s for key %s ' +\n                'when mixing in component specs.',\n              specPolicy,\n              name\n            );\n\n            // For methods which are defined more than once, call the existing\n            // methods before calling the new property, merging if appropriate.\n            if (specPolicy === 'DEFINE_MANY_MERGED') {\n              proto[name] = createMergedResultFunction(proto[name], property);\n            } else if (specPolicy === 'DEFINE_MANY') {\n              proto[name] = createChainedFunction(proto[name], property);\n            }\n          } else {\n            proto[name] = property;\n            if (process.env.NODE_ENV !== 'production') {\n              // Add verbose displayName to the function, which helps when looking\n              // at profiling tools.\n              if (typeof property === 'function' && spec.displayName) {\n                proto[name].displayName = spec.displayName + '_' + name;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  function mixStaticSpecIntoComponent(Constructor, statics) {\n    if (!statics) {\n      return;\n    }\n\n    for (var name in statics) {\n      var property = statics[name];\n      if (!statics.hasOwnProperty(name)) {\n        continue;\n      }\n\n      var isReserved = name in RESERVED_SPEC_KEYS;\n      _invariant(\n        !isReserved,\n        'ReactClass: You are attempting to define a reserved ' +\n          'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n          'as an instance property instead; it will still be accessible on the ' +\n          'constructor.',\n        name\n      );\n\n      var isAlreadyDefined = name in Constructor;\n      if (isAlreadyDefined) {\n        var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n          ? ReactClassStaticInterface[name]\n          : null;\n\n        _invariant(\n          specPolicy === 'DEFINE_MANY_MERGED',\n          'ReactClass: You are attempting to define ' +\n            '`%s` on your component more than once. This conflict may be ' +\n            'due to a mixin.',\n          name\n        );\n\n        Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n        return;\n      }\n\n      Constructor[name] = property;\n    }\n  }\n\n  /**\n   * Merge two objects, but throw if both contain the same key.\n   *\n   * @param {object} one The first object, which is mutated.\n   * @param {object} two The second object\n   * @return {object} one after it has been mutated to contain everything in two.\n   */\n  function mergeIntoWithNoDuplicateKeys(one, two) {\n    _invariant(\n      one && two && typeof one === 'object' && typeof two === 'object',\n      'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n    );\n\n    for (var key in two) {\n      if (two.hasOwnProperty(key)) {\n        _invariant(\n          one[key] === undefined,\n          'mergeIntoWithNoDuplicateKeys(): ' +\n            'Tried to merge two objects with the same key: `%s`. This conflict ' +\n            'may be due to a mixin; in particular, this may be caused by two ' +\n            'getInitialState() or getDefaultProps() methods returning objects ' +\n            'with clashing keys.',\n          key\n        );\n        one[key] = two[key];\n      }\n    }\n    return one;\n  }\n\n  /**\n   * Creates a function that invokes two functions and merges their return values.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createMergedResultFunction(one, two) {\n    return function mergedResult() {\n      var a = one.apply(this, arguments);\n      var b = two.apply(this, arguments);\n      if (a == null) {\n        return b;\n      } else if (b == null) {\n        return a;\n      }\n      var c = {};\n      mergeIntoWithNoDuplicateKeys(c, a);\n      mergeIntoWithNoDuplicateKeys(c, b);\n      return c;\n    };\n  }\n\n  /**\n   * Creates a function that invokes two functions and ignores their return vales.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createChainedFunction(one, two) {\n    return function chainedFunction() {\n      one.apply(this, arguments);\n      two.apply(this, arguments);\n    };\n  }\n\n  /**\n   * Binds a method to the component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   * @param {function} method Method to be bound.\n   * @return {function} The bound method.\n   */\n  function bindAutoBindMethod(component, method) {\n    var boundMethod = method.bind(component);\n    if (process.env.NODE_ENV !== 'production') {\n      boundMethod.__reactBoundContext = component;\n      boundMethod.__reactBoundMethod = method;\n      boundMethod.__reactBoundArguments = null;\n      var componentName = component.constructor.displayName;\n      var _bind = boundMethod.bind;\n      boundMethod.bind = function(newThis) {\n        for (\n          var _len = arguments.length,\n            args = Array(_len > 1 ? _len - 1 : 0),\n            _key = 1;\n          _key < _len;\n          _key++\n        ) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        // User is trying to bind() an autobound method; we effectively will\n        // ignore the value of \"this\" that the user is trying to use, so\n        // let's warn.\n        if (newThis !== component && newThis !== null) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): React component methods may only be bound to the ' +\n                'component instance. See %s',\n              componentName\n            );\n          }\n        } else if (!args.length) {\n          if (process.env.NODE_ENV !== 'production') {\n            warning(\n              false,\n              'bind(): You are binding a component method to the component. ' +\n                'React does this for you automatically in a high-performance ' +\n                'way, so you can safely remove this call. See %s',\n              componentName\n            );\n          }\n          return boundMethod;\n        }\n        var reboundMethod = _bind.apply(boundMethod, arguments);\n        reboundMethod.__reactBoundContext = component;\n        reboundMethod.__reactBoundMethod = method;\n        reboundMethod.__reactBoundArguments = args;\n        return reboundMethod;\n      };\n    }\n    return boundMethod;\n  }\n\n  /**\n   * Binds all auto-bound methods in a component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   */\n  function bindAutoBindMethods(component) {\n    var pairs = component.__reactAutoBindPairs;\n    for (var i = 0; i < pairs.length; i += 2) {\n      var autoBindKey = pairs[i];\n      var method = pairs[i + 1];\n      component[autoBindKey] = bindAutoBindMethod(component, method);\n    }\n  }\n\n  var IsMountedPreMixin = {\n    componentDidMount: function() {\n      this.__isMounted = true;\n    }\n  };\n\n  var IsMountedPostMixin = {\n    componentWillUnmount: function() {\n      this.__isMounted = false;\n    }\n  };\n\n  /**\n   * Add more to the ReactClass base class. These are all legacy features and\n   * therefore not already part of the modern ReactComponent.\n   */\n  var ReactClassMixin = {\n    /**\n     * TODO: This will be deprecated because state should always keep a consistent\n     * type signature and the only use case for this, is to avoid that.\n     */\n    replaceState: function(newState, callback) {\n      this.updater.enqueueReplaceState(this, newState, callback);\n    },\n\n    /**\n     * Checks whether or not this composite component is mounted.\n     * @return {boolean} True if mounted, false otherwise.\n     * @protected\n     * @final\n     */\n    isMounted: function() {\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this.__didWarnIsMounted,\n          '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n            'subscriptions and pending requests in componentWillUnmount to ' +\n            'prevent memory leaks.',\n          (this.constructor && this.constructor.displayName) ||\n            this.name ||\n            'Component'\n        );\n        this.__didWarnIsMounted = true;\n      }\n      return !!this.__isMounted;\n    }\n  };\n\n  var ReactClassComponent = function() {};\n  _assign(\n    ReactClassComponent.prototype,\n    ReactComponent.prototype,\n    ReactClassMixin\n  );\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  function createClass(spec) {\n    // To keep our warnings more understandable, we'll use a little hack here to\n    // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n    // unnecessarily identify a class without displayName as 'Constructor'.\n    var Constructor = identity(function(props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (process.env.NODE_ENV !== 'production') {\n        warning(\n          this instanceof Constructor,\n          'Something is calling a React component directly. Use a factory or ' +\n            'JSX instead. See: https://fb.me/react-legacyfactory'\n        );\n      }\n\n      // Wire up auto-binding\n      if (this.__reactAutoBindPairs.length) {\n        bindAutoBindMethods(this);\n      }\n\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n\n      this.state = null;\n\n      // ReactClasses doesn't have constructors. Instead, they use the\n      // getInitialState and componentWillMount methods for initialization.\n\n      var initialState = this.getInitialState ? this.getInitialState() : null;\n      if (process.env.NODE_ENV !== 'production') {\n        // We allow auto-mocks to proceed as if they're returning null.\n        if (\n          initialState === undefined &&\n          this.getInitialState._isMockFunction\n        ) {\n          // This is probably bad practice. Consider warning here and\n          // deprecating this convenience.\n          initialState = null;\n        }\n      }\n      _invariant(\n        typeof initialState === 'object' && !Array.isArray(initialState),\n        '%s.getInitialState(): must return an object or null',\n        Constructor.displayName || 'ReactCompositeComponent'\n      );\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n    mixSpecIntoComponent(Constructor, spec);\n    mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      // This is a tag to indicate that the use of these method names is ok,\n      // since it's used with createClass. If it's not, then it's likely a\n      // mistake so we'll warn you to use the static property, property\n      // initializer or constructor respectively.\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps.isReactClassApproved = {};\n      }\n      if (Constructor.prototype.getInitialState) {\n        Constructor.prototype.getInitialState.isReactClassApproved = {};\n      }\n    }\n\n    _invariant(\n      Constructor.prototype.render,\n      'createClass(...): Class specification must implement a `render` method.'\n    );\n\n    if (process.env.NODE_ENV !== 'production') {\n      warning(\n        !Constructor.prototype.componentShouldUpdate,\n        '%s has a method called ' +\n          'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n          'The name is phrased as a question because the function is ' +\n          'expected to return a value.',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.componentWillRecieveProps,\n        '%s has a method called ' +\n          'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n      warning(\n        !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n        '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n          'Did you mean UNSAFE_componentWillReceiveProps()?',\n        spec.displayName || 'A component'\n      );\n    }\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  }\n\n  return createClass;\n}\n\nmodule.exports = factory;\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","\"use strict\";\n\nexports.__esModule = true;\nvar loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) {\n  var currentTurn = 0,\n      isDone = false;\n  var isSync = false,\n      hasNext = false,\n      doneArgs = void 0;\n\n  var done = function done() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    isDone = true;\n\n    if (isSync) {\n      // Iterate instead of recursing if possible.\n      doneArgs = args;\n      return;\n    }\n\n    callback.apply(undefined, args);\n  };\n\n  var next = function next() {\n    if (isDone) return;\n\n    hasNext = true;\n\n    if (isSync) return; // Iterate instead of recursing if possible.\n\n    isSync = true;\n\n    while (!isDone && currentTurn < turns && hasNext) {\n      hasNext = false;\n      work(currentTurn++, next, done);\n    }\n\n    isSync = false;\n\n    if (isDone) {\n      // This means the loop finished synchronously.\n      callback.apply(undefined, doneArgs);\n      return;\n    }\n\n    if (currentTurn >= turns && hasNext) {\n      isDone = true;\n      callback();\n    }\n  };\n\n  next();\n};","'use strict';\n\nexports.__esModule = true;\nexports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n  enumerable: true,\n  get: function get() {\n    return _BrowserProtocol.getUserConfirmation;\n  }\n});\nObject.defineProperty(exports, 'go', {\n  enumerable: true,\n  get: function get() {\n    return _BrowserProtocol.go;\n  }\n});\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n  return (0, _LocationUtils.createLocation)(window.location);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n  window.location.href = (0, _PathUtils.createPath)(location);\n  return false; // Don't update location\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n  window.location.replace((0, _PathUtils.createPath)(location));\n  return false; // Don't update location\n};","'use strict';\n\nexports.__esModule = true;\nexports.replaceLocation = exports.pushLocation = exports.startListener = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n  enumerable: true,\n  get: function get() {\n    return _BrowserProtocol.getUserConfirmation;\n  }\n});\nObject.defineProperty(exports, 'go', {\n  enumerable: true,\n  get: function get() {\n    return _BrowserProtocol.go;\n  }\n});\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HashChangeEvent = 'hashchange';\n\nvar getHashPath = function getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n  return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n  var hashIndex = window.location.href.indexOf('#');\n\n  window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation(pathCoder, queryKey) {\n  var path = pathCoder.decodePath(getHashPath());\n  var key = (0, _PathUtils.getQueryStringValueFromPath)(path, queryKey);\n\n  var state = void 0;\n  if (key) {\n    path = (0, _PathUtils.stripQueryStringValueFromPath)(path, queryKey);\n    state = (0, _DOMStateStorage.readState)(key);\n  }\n\n  var init = (0, _PathUtils.parsePath)(path);\n  init.state = state;\n\n  return (0, _LocationUtils.createLocation)(init, undefined, key);\n};\n\nvar prevLocation = void 0;\n\nvar startListener = exports.startListener = function startListener(listener, pathCoder, queryKey) {\n  var handleHashChange = function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = pathCoder.encodePath(path);\n\n    if (path !== encodedPath) {\n      // Always be sure we have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var currentLocation = getCurrentLocation(pathCoder, queryKey);\n\n      if (prevLocation && currentLocation.key && prevLocation.key === currentLocation.key) return; // Ignore extraneous hashchange events\n\n      prevLocation = currentLocation;\n\n      listener(currentLocation);\n    }\n  };\n\n  // Ensure the hash is encoded properly.\n  var path = getHashPath();\n  var encodedPath = pathCoder.encodePath(path);\n\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n\n  (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n\n  return function () {\n    return (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n  };\n};\n\nvar updateLocation = function updateLocation(location, pathCoder, queryKey, updateHash) {\n  var state = location.state,\n      key = location.key;\n\n\n  var path = pathCoder.encodePath((0, _PathUtils.createPath)(location));\n\n  if (state !== undefined) {\n    path = (0, _PathUtils.addQueryStringValueToPath)(path, queryKey, key);\n    (0, _DOMStateStorage.saveState)(key, state);\n  }\n\n  prevLocation = location;\n\n  updateHash(path);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location, pathCoder, queryKey) {\n  return updateLocation(location, pathCoder, queryKey, function (path) {\n    if (getHashPath() !== path) {\n      pushHashPath(path);\n    } else {\n      process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'You cannot PUSH the same path using hash history') : void 0;\n    }\n  });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location, pathCoder, queryKey) {\n  return updateLocation(location, pathCoder, queryKey, function (path) {\n    if (getHashPath() !== path) replaceHashPath(path);\n  });\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  scrollKey: _propTypes2.default.string.isRequired,\n  shouldUpdateScroll: _propTypes2.default.func,\n  children: _propTypes2.default.element.isRequired\n};\n\nvar contextTypes = {\n  // This is necessary when rendering on the client. However, when rendering on\n  // the server, this container will do nothing, and thus does not require the\n  // scroll behavior context.\n  scrollBehavior: _propTypes2.default.object\n};\n\nvar ScrollContainer = function (_React$Component) {\n  _inherits(ScrollContainer, _React$Component);\n\n  function ScrollContainer(props, context) {\n    _classCallCheck(this, ScrollContainer);\n\n    // We don't re-register if the scroll key changes, so make sure we\n    // unregister with the initial scroll key just in case the user changes it.\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n      if (!shouldUpdateScroll) {\n        return true;\n      }\n\n      // Hack to allow accessing scrollBehavior._stateStorage.\n      return shouldUpdateScroll.call(_this.context.scrollBehavior.scrollBehavior, prevRouterProps, routerProps);\n    };\n\n    _this.scrollKey = props.scrollKey;\n    return _this;\n  }\n\n  ScrollContainer.prototype.componentDidMount = function componentDidMount() {\n    this.context.scrollBehavior.registerElement(this.props.scrollKey, _reactDom2.default.findDOMNode(this), // eslint-disable-line react/no-find-dom-node\n    this.shouldUpdateScroll);\n\n    // Only keep around the current DOM node in development, as this is only\n    // for emitting the appropriate warning.\n    if (process.env.NODE_ENV !== 'production') {\n      this.domNode = _reactDom2.default.findDOMNode(this); // eslint-disable-line react/no-find-dom-node\n    }\n  };\n\n  ScrollContainer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(nextProps.scrollKey === this.props.scrollKey, '<ScrollContainer> does not support changing scrollKey.') : void 0;\n  };\n\n  ScrollContainer.prototype.componentDidUpdate = function componentDidUpdate() {\n    if (process.env.NODE_ENV !== 'production') {\n      var prevDomNode = this.domNode;\n      this.domNode = _reactDom2.default.findDOMNode(this); // eslint-disable-line react/no-find-dom-node\n\n      process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(this.domNode === prevDomNode, '<ScrollContainer> does not support changing DOM node.') : void 0;\n    }\n  };\n\n  ScrollContainer.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.context.scrollBehavior.unregisterElement(this.scrollKey);\n  };\n\n  ScrollContainer.prototype.render = function render() {\n    return this.props.children;\n  };\n\n  return ScrollContainer;\n}(_react2.default.Component);\n\nScrollContainer.propTypes = propTypes;\nScrollContainer.contextTypes = contextTypes;\n\nexports.default = ScrollContainer;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = useScroll;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollBehavior = require('scroll-behavior');\n\nvar _scrollBehavior2 = _interopRequireDefault(_scrollBehavior);\n\nvar _ScrollBehaviorContext = require('./ScrollBehaviorContext');\n\nvar _ScrollBehaviorContext2 = _interopRequireDefault(_ScrollBehaviorContext);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction defaultCreateScrollBehavior(config) {\n  return new _scrollBehavior2.default(config);\n}\n\nfunction useScroll(shouldUpdateScrollOrConfig) {\n  var shouldUpdateScroll = void 0;\n  var createScrollBehavior = void 0;\n\n  if (!shouldUpdateScrollOrConfig || typeof shouldUpdateScrollOrConfig === 'function') {\n    shouldUpdateScroll = shouldUpdateScrollOrConfig;\n    createScrollBehavior = defaultCreateScrollBehavior;\n  } else {\n    shouldUpdateScroll = shouldUpdateScrollOrConfig.shouldUpdateScroll;\n    var _shouldUpdateScrollOr = shouldUpdateScrollOrConfig.createScrollBehavior;\n    createScrollBehavior = _shouldUpdateScrollOr === undefined ? defaultCreateScrollBehavior : _shouldUpdateScrollOr;\n  }\n\n  return {\n    renderRouterContext: function renderRouterContext(child, props) {\n      return _react2.default.createElement(\n        _ScrollBehaviorContext2.default,\n        {\n          shouldUpdateScroll: shouldUpdateScroll,\n          createScrollBehavior: createScrollBehavior,\n          routerProps: props\n        },\n        child\n      );\n    }\n  };\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _off = _interopRequireDefault(require(\"dom-helpers/events/off\"));\n\nvar _on = _interopRequireDefault(require(\"dom-helpers/events/on\"));\n\nvar _scrollLeft = _interopRequireDefault(require(\"dom-helpers/query/scrollLeft\"));\n\nvar _scrollTop = _interopRequireDefault(require(\"dom-helpers/query/scrollTop\"));\n\nvar _requestAnimationFrame = _interopRequireDefault(require(\"dom-helpers/util/requestAnimationFrame\"));\n\nvar _invariant = _interopRequireDefault(require(\"invariant\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable no-underscore-dangle */\n// Try at most this many times to scroll, to avoid getting stuck.\nvar MAX_SCROLL_ATTEMPTS = 2;\n\nvar ScrollBehavior = /*#__PURE__*/function () {\n  function ScrollBehavior(_ref) {\n    var _this = this;\n\n    var addTransitionHook = _ref.addTransitionHook,\n        stateStorage = _ref.stateStorage,\n        getCurrentLocation = _ref.getCurrentLocation,\n        shouldUpdateScroll = _ref.shouldUpdateScroll;\n\n    this._restoreScrollRestoration = function () {\n      /* istanbul ignore if: not supported by any browsers on Travis */\n      if (_this._oldScrollRestoration) {\n        try {\n          window.history.scrollRestoration = _this._oldScrollRestoration;\n        } catch (e) {\n          /* silence */\n        }\n      }\n    };\n\n    this._onWindowScroll = function () {\n      if (_this._ignoreScrollEvents) {\n        // Don't save the scroll position until the transition is complete\n        return;\n      } // It's possible that this scroll operation was triggered by what will be a\n      // `POP` transition. Instead of updating the saved location immediately, we\n      // have to enqueue the update, then potentially cancel it if we observe a\n      // location update.\n\n\n      if (!_this._saveWindowPositionHandle) {\n        _this._saveWindowPositionHandle = (0, _requestAnimationFrame[\"default\"])(_this._saveWindowPosition);\n      }\n\n      if (_this._windowScrollTarget) {\n        var _this$_windowScrollTa = _this._windowScrollTarget,\n            xTarget = _this$_windowScrollTa[0],\n            yTarget = _this$_windowScrollTa[1];\n        var x = (0, _scrollLeft[\"default\"])(window);\n        var y = (0, _scrollTop[\"default\"])(window);\n\n        if (x === xTarget && y === yTarget) {\n          _this._windowScrollTarget = null;\n\n          _this._cancelCheckWindowScroll();\n        }\n      }\n    };\n\n    this._saveWindowPosition = function () {\n      _this._saveWindowPositionHandle = null;\n\n      _this._savePosition(null, window);\n    };\n\n    this._checkWindowScrollPosition = function () {\n      _this._checkWindowScrollHandle = null; // We can only get here if scrollTarget is set. Every code path that unsets\n      // scroll target also cancels the handle to avoid calling this handler.\n      // Still, check anyway just in case.\n\n      /* istanbul ignore if: paranoid guard */\n\n      if (!_this._windowScrollTarget) {\n        return Promise.resolve();\n      }\n\n      _this.scrollToTarget(window, _this._windowScrollTarget);\n\n      ++_this._numWindowScrollAttempts;\n      /* istanbul ignore if: paranoid guard */\n\n      if (_this._numWindowScrollAttempts >= MAX_SCROLL_ATTEMPTS) {\n        // This might happen if the scroll position was already set to the target\n        _this._windowScrollTarget = null;\n        return Promise.resolve();\n      }\n\n      return new Promise(function (resolve) {\n        _this._checkWindowScrollHandle = (0, _requestAnimationFrame[\"default\"])(function () {\n          return resolve(_this._checkWindowScrollPosition());\n        });\n      });\n    };\n\n    this._stateStorage = stateStorage;\n    this._getCurrentLocation = getCurrentLocation;\n    this._shouldUpdateScroll = shouldUpdateScroll; // This helps avoid some jankiness in fighting against the browser's\n    // default scroll behavior on `POP` transitions.\n\n    /* istanbul ignore else: Travis browsers all support this */\n\n    if ('scrollRestoration' in window.history && // Unfortunately, Safari on iOS freezes for 2-6s after the user swipes to\n    // navigate through history with scrollRestoration being 'manual', so we\n    // need to detect this browser and exclude it from the following code\n    // until this bug is fixed by Apple.\n    !(0, _utils.isMobileSafari)()) {\n      this._oldScrollRestoration = window.history.scrollRestoration;\n\n      try {\n        window.history.scrollRestoration = 'manual'; // Scroll restoration persists across page reloads. We want to reset\n        // this to the original value, so that we can let the browser handle\n        // restoring the initial scroll position on server-rendered pages.\n\n        (0, _on[\"default\"])(window, 'beforeunload', this._restoreScrollRestoration);\n      } catch (e) {\n        this._oldScrollRestoration = null;\n      }\n    } else {\n      this._oldScrollRestoration = null;\n    }\n\n    this._saveWindowPositionHandle = null;\n    this._checkWindowScrollHandle = null;\n    this._windowScrollTarget = null;\n    this._numWindowScrollAttempts = 0;\n    this._ignoreScrollEvents = false;\n    this._scrollElements = {}; // We have to listen to each window scroll update rather than to just\n    // location updates, because some browsers will update scroll position\n    // before emitting the location change.\n\n    (0, _on[\"default\"])(window, 'scroll', this._onWindowScroll);\n    this._removeTransitionHook = addTransitionHook(function () {\n      _requestAnimationFrame[\"default\"].cancel(_this._saveWindowPositionHandle);\n\n      _this._saveWindowPositionHandle = null;\n      Object.keys(_this._scrollElements).forEach(function (key) {\n        var scrollElement = _this._scrollElements[key];\n\n        _requestAnimationFrame[\"default\"].cancel(scrollElement.savePositionHandle);\n\n        scrollElement.savePositionHandle = null; // It's fine to save element scroll positions here, though; the browser\n        // won't modify them.\n\n        if (!_this._ignoreScrollEvents) {\n          _this._saveElementPosition(key);\n        }\n      });\n    });\n  }\n\n  var _proto = ScrollBehavior.prototype;\n\n  _proto.registerElement = function registerElement(key, element, shouldUpdateScroll, context) {\n    var _this2 = this;\n\n    !!this._scrollElements[key] ? process.env.NODE_ENV !== \"production\" ? (0, _invariant[\"default\"])(false, 'ScrollBehavior: There is already an element registered for `%s`.', key) : invariant(false) : void 0;\n\n    var saveElementPosition = function saveElementPosition() {\n      _this2._saveElementPosition(key);\n    };\n\n    var scrollElement = {\n      element: element,\n      shouldUpdateScroll: shouldUpdateScroll,\n      savePositionHandle: null,\n      onScroll: function onScroll() {\n        if (!scrollElement.savePositionHandle && !_this2._ignoreScrollEvents) {\n          scrollElement.savePositionHandle = (0, _requestAnimationFrame[\"default\"])(saveElementPosition);\n        }\n      }\n    }; // In case no scrolling occurs, save the initial position\n\n    if (!scrollElement.savePositionHandle && !this._ignoreScrollEvents) {\n      scrollElement.savePositionHandle = (0, _requestAnimationFrame[\"default\"])(saveElementPosition);\n    }\n\n    this._scrollElements[key] = scrollElement;\n    (0, _on[\"default\"])(element, 'scroll', scrollElement.onScroll);\n\n    this._updateElementScroll(key, null, context);\n  };\n\n  _proto.unregisterElement = function unregisterElement(key) {\n    !this._scrollElements[key] ? process.env.NODE_ENV !== \"production\" ? (0, _invariant[\"default\"])(false, 'ScrollBehavior: There is no element registered for `%s`.', key) : invariant(false) : void 0;\n    var _this$_scrollElements = this._scrollElements[key],\n        element = _this$_scrollElements.element,\n        onScroll = _this$_scrollElements.onScroll,\n        savePositionHandle = _this$_scrollElements.savePositionHandle;\n    (0, _off[\"default\"])(element, 'scroll', onScroll);\n\n    _requestAnimationFrame[\"default\"].cancel(savePositionHandle);\n\n    delete this._scrollElements[key];\n  };\n\n  _proto.updateScroll = function updateScroll(prevContext, context) {\n    var _this3 = this;\n\n    this._updateWindowScroll(prevContext, context).then(function () {\n      // Save the position immediately after a transition so that if no\n      // scrolling occurs, there is still a saved position\n      if (!_this3._saveWindowPositionHandle) {\n        _this3._saveWindowPositionHandle = (0, _requestAnimationFrame[\"default\"])(_this3._saveWindowPosition);\n      }\n    });\n\n    Object.keys(this._scrollElements).forEach(function (key) {\n      _this3._updateElementScroll(key, prevContext, context);\n    });\n  };\n\n  _proto.stop = function stop() {\n    this._restoreScrollRestoration();\n\n    (0, _off[\"default\"])(window, 'scroll', this._onWindowScroll);\n\n    this._cancelCheckWindowScroll();\n\n    this._removeTransitionHook();\n  };\n\n  _proto.startIgnoringScrollEvents = function startIgnoringScrollEvents() {\n    this._ignoreScrollEvents = true;\n  };\n\n  _proto.stopIgnoringScrollEvents = function stopIgnoringScrollEvents() {\n    this._ignoreScrollEvents = false;\n  };\n\n  _proto._cancelCheckWindowScroll = function _cancelCheckWindowScroll() {\n    _requestAnimationFrame[\"default\"].cancel(this._checkWindowScrollHandle);\n\n    this._checkWindowScrollHandle = null;\n  };\n\n  _proto._saveElementPosition = function _saveElementPosition(key) {\n    var scrollElement = this._scrollElements[key];\n    scrollElement.savePositionHandle = null;\n\n    this._savePosition(key, scrollElement.element);\n  };\n\n  _proto._savePosition = function _savePosition(key, element) {\n    this._stateStorage.save(this._getCurrentLocation(), key, [(0, _scrollLeft[\"default\"])(element), (0, _scrollTop[\"default\"])(element)]);\n  };\n\n  _proto._updateWindowScroll = function _updateWindowScroll(prevContext, context) {\n    // Whatever we were doing before isn't relevant any more.\n    this._cancelCheckWindowScroll();\n\n    this._windowScrollTarget = this._getScrollTarget(null, this._shouldUpdateScroll, prevContext, context); // Updating the window scroll position is really flaky. Just trying to\n    // scroll it isn't enough. Instead, try to scroll a few times until it\n    // works.\n\n    this._numWindowScrollAttempts = 0;\n    return this._checkWindowScrollPosition();\n  };\n\n  _proto._updateElementScroll = function _updateElementScroll(key, prevContext, context) {\n    var _this$_scrollElements2 = this._scrollElements[key],\n        element = _this$_scrollElements2.element,\n        shouldUpdateScroll = _this$_scrollElements2.shouldUpdateScroll;\n\n    var scrollTarget = this._getScrollTarget(key, shouldUpdateScroll, prevContext, context);\n\n    if (!scrollTarget) {\n      return;\n    } // Unlike with the window, there shouldn't be any flakiness to deal with\n    // here.\n\n\n    this.scrollToTarget(element, scrollTarget);\n  };\n\n  _proto._getDefaultScrollTarget = function _getDefaultScrollTarget(location) {\n    var hash = location.hash;\n\n    if (hash && hash !== '#') {\n      return hash.charAt(0) === '#' ? hash.slice(1) : hash;\n    }\n\n    return [0, 0];\n  };\n\n  _proto._getScrollTarget = function _getScrollTarget(key, shouldUpdateScroll, prevContext, context) {\n    var scrollTarget = shouldUpdateScroll ? shouldUpdateScroll.call(this, prevContext, context) : true;\n\n    if (!scrollTarget || Array.isArray(scrollTarget) || typeof scrollTarget === 'string') {\n      return scrollTarget;\n    }\n\n    var location = this._getCurrentLocation();\n\n    return this._getSavedScrollTarget(key, location) || this._getDefaultScrollTarget(location);\n  };\n\n  _proto._getSavedScrollTarget = function _getSavedScrollTarget(key, location) {\n    if (location.action === 'PUSH') {\n      return null;\n    }\n\n    return this._stateStorage.read(location, key);\n  };\n\n  _proto.scrollToTarget = function scrollToTarget(element, target) {\n    if (typeof target === 'string') {\n      var targetElement = document.getElementById(target) || document.getElementsByName(target)[0];\n\n      if (targetElement) {\n        targetElement.scrollIntoView();\n        return;\n      } // Fallback to scrolling to top when target fragment doesn't exist.\n\n\n      target = [0, 0]; // eslint-disable-line no-param-reassign\n    }\n\n    var _target = target,\n        left = _target[0],\n        top = _target[1];\n    (0, _scrollLeft[\"default\"])(element, left);\n    (0, _scrollTop[\"default\"])(element, top);\n  };\n\n  return ScrollBehavior;\n}();\n\nexports[\"default\"] = ScrollBehavior;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n  on = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow.default)(node);\n  if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n  if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n  var win = (0, _isWindow.default)(node);\n  if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n  if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n  return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM.default) {\n  vendors.some(function (vendor) {\n    var rafKey = getKey(vendor, 'request');\n\n    if (rafKey in window) {\n      cancel = getKey(vendor, 'cancel');\n      return raf = function raf(cb) {\n        return window[rafKey](cb);\n      };\n    }\n  });\n}\n/* https://github.com/component/raf */\n\n\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n  var curr = new Date().getTime(),\n      ms = Math.max(0, 16 - (curr - prev)),\n      req = setTimeout(fn, ms);\n  prev = curr;\n  return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n  return raf(cb);\n};\n\ncompatRaf.cancel = function (id) {\n  window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\n\nvar _default = compatRaf;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.isMobileSafari = isMobileSafari;\n\nfunction isMobileSafari() {\n  return /iPad|iPhone|iPod/.test(window.navigator.platform) && /^((?!CriOS).)*Safari/.test(window.navigator.userAgent);\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _StateStorage = require('./StateStorage');\n\nvar _StateStorage2 = _interopRequireDefault(_StateStorage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n  shouldUpdateScroll: _propTypes2.default.func,\n  createScrollBehavior: _propTypes2.default.func.isRequired,\n  routerProps: _propTypes2.default.object.isRequired,\n  children: _propTypes2.default.element.isRequired\n};\n\nvar childContextTypes = {\n  scrollBehavior: _propTypes2.default.object.isRequired\n};\n\nvar ScrollBehaviorContext = function (_React$Component) {\n  _inherits(ScrollBehaviorContext, _React$Component);\n\n  function ScrollBehaviorContext(props, context) {\n    _classCallCheck(this, ScrollBehaviorContext);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _initialiseProps.call(_this);\n\n    var routerProps = props.routerProps;\n    var router = routerProps.router;\n\n\n    _this.scrollBehavior = props.createScrollBehavior({\n      addTransitionHook: router.listenBefore,\n      stateStorage: new _StateStorage2.default(router),\n      getCurrentLocation: function getCurrentLocation() {\n        return _this.props.routerProps.location;\n      },\n      shouldUpdateScroll: _this.shouldUpdateScroll\n    });\n\n    _this.scrollBehavior.updateScroll(null, routerProps);\n    return _this;\n  }\n\n  ScrollBehaviorContext.prototype.getChildContext = function getChildContext() {\n    return {\n      scrollBehavior: this\n    };\n  };\n\n  ScrollBehaviorContext.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var routerProps = this.props.routerProps;\n\n    var prevRouterProps = prevProps.routerProps;\n\n    if (routerProps.location === prevRouterProps.location) {\n      return;\n    }\n\n    this.scrollBehavior.updateScroll(prevRouterProps, routerProps);\n  };\n\n  ScrollBehaviorContext.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.scrollBehavior.stop();\n  };\n\n  ScrollBehaviorContext.prototype.render = function render() {\n    return this.props.children;\n  };\n\n  return ScrollBehaviorContext;\n}(_react2.default.Component);\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n    var shouldUpdateScroll = _this2.props.shouldUpdateScroll;\n\n    if (!shouldUpdateScroll) {\n      return true;\n    }\n\n    // Hack to allow accessing scrollBehavior._stateStorage.\n    return shouldUpdateScroll.call(_this2.scrollBehavior, prevRouterProps, routerProps);\n  };\n\n  this.registerElement = function (key, element, shouldUpdateScroll) {\n    _this2.scrollBehavior.registerElement(key, element, shouldUpdateScroll, _this2.props.routerProps);\n  };\n\n  this.unregisterElement = function (key) {\n    _this2.scrollBehavior.unregisterElement(key);\n  };\n};\n\nScrollBehaviorContext.propTypes = propTypes;\nScrollBehaviorContext.childContextTypes = childContextTypes;\n\nexports.default = ScrollBehaviorContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _DOMStateStorage = require('history/lib/DOMStateStorage');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STATE_KEY_PREFIX = '@@scroll|';\n\nvar StateStorage = function () {\n  function StateStorage(router) {\n    _classCallCheck(this, StateStorage);\n\n    this.getFallbackLocationKey = router.createPath;\n  }\n\n  StateStorage.prototype.read = function read(location, key) {\n    return (0, _DOMStateStorage.readState)(this.getStateKey(location, key));\n  };\n\n  StateStorage.prototype.save = function save(location, key, value) {\n    (0, _DOMStateStorage.saveState)(this.getStateKey(location, key), value);\n  };\n\n  StateStorage.prototype.getStateKey = function getStateKey(location, key) {\n    var locationKey = location.key || this.getFallbackLocationKey(location);\n    var stateKeyBase = '' + STATE_KEY_PREFIX + locationKey;\n    return key == null ? stateKeyBase : stateKeyBase + '|' + key;\n  };\n\n  return StateStorage;\n}();\n\nexports.default = StateStorage;\nmodule.exports = exports['default'];","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  var context = new Axios(defaultConfig);\n  var instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context);\n\n  // Copy context to instance\n  utils.extend(instance, context);\n\n  return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n  return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n  this.defaults = instanceConfig;\n  this.interceptors = {\n    request: new InterceptorManager(),\n    response: new InterceptorManager()\n  };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n  /*eslint no-param-reassign:0*/\n  // Allow for axios('example/url'[, config]) a la fetch API\n  if (typeof config === 'string') {\n    config = utils.merge({\n      url: arguments[0]\n    }, arguments[1]);\n  }\n\n  config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n  config.method = config.method.toLowerCase();\n\n  // Support baseURL config\n  if (config.baseURL && !isAbsoluteURL(config.url)) {\n    config.url = combineURLs(config.baseURL, config.url);\n  }\n\n  // Hook up interceptors middleware\n  var chain = [dispatchRequest, undefined];\n  var promise = Promise.resolve(config);\n\n  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n    chain.unshift(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n    chain.push(interceptor.fulfilled, interceptor.rejected);\n  });\n\n  while (chain.length) {\n    promise = promise.then(chain.shift(), chain.shift());\n  }\n\n  return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, data, config) {\n    return this.request(utils.merge(config || {}, {\n      method: method,\n      url: url,\n      data: data\n    }));\n  };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n  utils.forEach(headers, function processHeader(value, name) {\n    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n      headers[normalizedName] = value;\n      delete headers[name];\n    }\n  });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  // Note: status is not exposed by XDomainRequest\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(createError(\n      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response\n    ));\n  }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n  error.config = config;\n  if (code) {\n    error.code = code;\n  }\n  error.request = request;\n  error.response = response;\n  return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%40/gi, '@').\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n\n  var serializedParams;\n  if (paramsSerializer) {\n    serializedParams = paramsSerializer(params);\n  } else if (utils.isURLSearchParams(params)) {\n    serializedParams = params.toString();\n  } else {\n    var parts = [];\n\n    utils.forEach(params, function serialize(val, key) {\n      if (val === null || typeof val === 'undefined') {\n        return;\n      }\n\n      if (utils.isArray(val)) {\n        key = key + '[]';\n      }\n\n      if (!utils.isArray(val)) {\n        val = [val];\n      }\n\n      utils.forEach(val, function parseValue(v) {\n        if (utils.isDate(v)) {\n          v = v.toISOString();\n        } else if (utils.isObject(v)) {\n          v = JSON.stringify(v);\n        }\n        parts.push(encode(key) + '=' + encode(v));\n      });\n    });\n\n    serializedParams = parts.join('&');\n  }\n\n  if (serializedParams) {\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n  var parsed = {};\n  var key;\n  var val;\n  var i;\n\n  if (!headers) { return parsed; }\n\n  utils.forEach(headers.split('\\n'), function parser(line) {\n    i = line.indexOf(':');\n    key = utils.trim(line.substr(0, i)).toLowerCase();\n    val = utils.trim(line.substr(i + 1));\n\n    if (key) {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    var msie = /(msie|trident)/i.test(navigator.userAgent);\n    var urlParsingNode = document.createElement('a');\n    var originURL;\n\n    /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      var href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n                  urlParsingNode.pathname :\n                  '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n            parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })()\n);\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n  this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n  var str = String(input);\n  var output = '';\n  for (\n    // initialize result and counter\n    var block, charCode, idx = 0, map = chars;\n    // if the next str index does not exist:\n    //   change the mapping table to \"=\"\n    //   check if d has no fractional digits\n    str.charAt(idx | 0) || (map = '=', idx % 1);\n    // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n    output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n  ) {\n    charCode = str.charCodeAt(idx += 3 / 4);\n    if (charCode > 0xFF) {\n      throw new E();\n    }\n    block = block << 8 | charCode;\n  }\n  return output;\n}\n\nmodule.exports = btoa;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n  utils.isStandardBrowserEnv() ?\n\n  // Standard browser envs support document.cookie\n  (function standardBrowserEnv() {\n    return {\n      write: function write(name, value, expires, path, domain, secure) {\n        var cookie = [];\n        cookie.push(name + '=' + encodeURIComponent(value));\n\n        if (utils.isNumber(expires)) {\n          cookie.push('expires=' + new Date(expires).toGMTString());\n        }\n\n        if (utils.isString(path)) {\n          cookie.push('path=' + path);\n        }\n\n        if (utils.isString(domain)) {\n          cookie.push('domain=' + domain);\n        }\n\n        if (secure === true) {\n          cookie.push('secure');\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read: function read(name) {\n        var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n        return (match ? decodeURIComponent(match[3]) : null);\n      },\n\n      remove: function remove(name) {\n        this.write(name, '', Date.now() - 86400000);\n      }\n    };\n  })() :\n\n  // Non standard browser env (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return {\n      write: function write() {},\n      read: function read() { return null; },\n      remove: function remove() {}\n    };\n  })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n  this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n  this.handlers.push({\n    fulfilled: fulfilled,\n    rejected: rejected\n  });\n  return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n  if (this.handlers[id]) {\n    this.handlers[id] = null;\n  }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n  utils.forEach(this.handlers, function forEachHandler(h) {\n    if (h !== null) {\n      fn(h);\n    }\n  });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  // Ensure headers exist\n  config.headers = config.headers || {};\n\n  // Transform request data\n  config.data = transformData(\n    config.data,\n    config.headers,\n    config.transformRequest\n  );\n\n  // Flatten headers\n  config.headers = utils.merge(\n    config.headers.common || {},\n    config.headers[config.method] || {},\n    config.headers || {}\n  );\n\n  utils.forEach(\n    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n    function cleanHeaderConfig(method) {\n      delete config.headers[method];\n    }\n  );\n\n  var adapter = config.adapter || defaults.adapter;\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData(\n      response.data,\n      response.headers,\n      config.transformResponse\n    );\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData(\n          reason.response.data,\n          reason.response.headers,\n          config.transformResponse\n        );\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n  /*eslint no-param-reassign:0*/\n  utils.forEach(fns, function transform(fn) {\n    data = fn(data, headers);\n  });\n\n  return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n  if (typeof executor !== 'function') {\n    throw new TypeError('executor must be a function.');\n  }\n\n  var resolvePromise;\n  this.promise = new Promise(function promiseExecutor(resolve) {\n    resolvePromise = resolve;\n  });\n\n  var token = this;\n  executor(function cancel(message) {\n    if (token.reason) {\n      // Cancellation has already been requested\n      return;\n    }\n\n    token.reason = new Cancel(message);\n    resolvePromise(token.reason);\n  });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n  if (this.reason) {\n    throw this.reason;\n  }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n  var cancel;\n  var token = new CancelToken(function executor(c) {\n    cancel = c;\n  });\n  return {\n    token: token,\n    cancel: cancel\n  };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n};\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n  return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","var tabbable = require('tabbable');\nvar xtend = require('xtend');\n\nvar listeningFocusTrap = null;\n\nfunction focusTrap(element, userOptions) {\n  var doc = document;\n  var container =\n    typeof element === 'string' ? doc.querySelector(element) : element;\n\n  var config = xtend(\n    {\n      returnFocusOnDeactivate: true,\n      escapeDeactivates: true\n    },\n    userOptions\n  );\n\n  var state = {\n    firstTabbableNode: null,\n    lastTabbableNode: null,\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: false,\n    paused: false\n  };\n\n  var trap = {\n    activate: activate,\n    deactivate: deactivate,\n    pause: pause,\n    unpause: unpause\n  };\n\n  return trap;\n\n  function activate(activateOptions) {\n    if (state.active) return;\n\n    updateTabbableNodes();\n\n    state.active = true;\n    state.paused = false;\n    state.nodeFocusedBeforeActivation = doc.activeElement;\n\n    var onActivate =\n      activateOptions && activateOptions.onActivate\n        ? activateOptions.onActivate\n        : config.onActivate;\n    if (onActivate) {\n      onActivate();\n    }\n\n    addListeners();\n    return trap;\n  }\n\n  function deactivate(deactivateOptions) {\n    if (!state.active) return;\n\n    removeListeners();\n    state.active = false;\n    state.paused = false;\n\n    var onDeactivate =\n      deactivateOptions && deactivateOptions.onDeactivate !== undefined\n        ? deactivateOptions.onDeactivate\n        : config.onDeactivate;\n    if (onDeactivate) {\n      onDeactivate();\n    }\n\n    var returnFocus =\n      deactivateOptions && deactivateOptions.returnFocus !== undefined\n        ? deactivateOptions.returnFocus\n        : config.returnFocusOnDeactivate;\n    if (returnFocus) {\n      delay(function() {\n        tryFocus(state.nodeFocusedBeforeActivation);\n      });\n    }\n\n    return trap;\n  }\n\n  function pause() {\n    if (state.paused || !state.active) return;\n    state.paused = true;\n    removeListeners();\n  }\n\n  function unpause() {\n    if (!state.paused || !state.active) return;\n    state.paused = false;\n    addListeners();\n  }\n\n  function addListeners() {\n    if (!state.active) return;\n\n    // There can be only one listening focus trap at a time\n    if (listeningFocusTrap) {\n      listeningFocusTrap.pause();\n    }\n    listeningFocusTrap = trap;\n\n    updateTabbableNodes();\n\n    // Delay ensures that the focused element doesn't capture the event\n    // that caused the focus trap activation.\n    delay(function() {\n      tryFocus(getInitialFocusNode());\n    });\n    doc.addEventListener('focusin', checkFocusIn, true);\n    doc.addEventListener('mousedown', checkPointerDown, true);\n    doc.addEventListener('touchstart', checkPointerDown, true);\n    doc.addEventListener('click', checkClick, true);\n    doc.addEventListener('keydown', checkKey, true);\n\n    return trap;\n  }\n\n  function removeListeners() {\n    if (!state.active || listeningFocusTrap !== trap) return;\n\n    doc.removeEventListener('focusin', checkFocusIn, true);\n    doc.removeEventListener('mousedown', checkPointerDown, true);\n    doc.removeEventListener('touchstart', checkPointerDown, true);\n    doc.removeEventListener('click', checkClick, true);\n    doc.removeEventListener('keydown', checkKey, true);\n\n    listeningFocusTrap = null;\n\n    return trap;\n  }\n\n  function getNodeForOption(optionName) {\n    var optionValue = config[optionName];\n    var node = optionValue;\n    if (!optionValue) {\n      return null;\n    }\n    if (typeof optionValue === 'string') {\n      node = doc.querySelector(optionValue);\n      if (!node) {\n        throw new Error('`' + optionName + '` refers to no known node');\n      }\n    }\n    if (typeof optionValue === 'function') {\n      node = optionValue();\n      if (!node) {\n        throw new Error('`' + optionName + '` did not return a node');\n      }\n    }\n    return node;\n  }\n\n  function getInitialFocusNode() {\n    var node;\n    if (getNodeForOption('initialFocus') !== null) {\n      node = getNodeForOption('initialFocus');\n    } else if (container.contains(doc.activeElement)) {\n      node = doc.activeElement;\n    } else {\n      node = state.firstTabbableNode || getNodeForOption('fallbackFocus');\n    }\n\n    if (!node) {\n      throw new Error(\n        \"You can't have a focus-trap without at least one focusable element\"\n      );\n    }\n\n    return node;\n  }\n\n  // This needs to be done on mousedown and touchstart instead of click\n  // so that it precedes the focus event.\n  function checkPointerDown(e) {\n    if (container.contains(e.target)) return;\n    if (config.clickOutsideDeactivates) {\n      deactivate({\n        returnFocus: !tabbable.isFocusable(e.target)\n      });\n    } else {\n      e.preventDefault();\n    }\n  }\n\n  // In case focus escapes the trap for some strange reason, pull it back in.\n  function checkFocusIn(e) {\n    // In Firefox when you Tab out of an iframe the Document is briefly focused.\n    if (container.contains(e.target) || e.target instanceof Document) {\n      return;\n    }\n    e.stopImmediatePropagation();\n    tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n  }\n\n  function checkKey(e) {\n    if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n      e.preventDefault();\n      deactivate();\n      return;\n    }\n    if (isTabEvent(e)) {\n      checkTab(e);\n      return;\n    }\n  }\n\n  // Hijack Tab events on the first and last focusable nodes of the trap,\n  // in order to prevent focus from escaping. If it escapes for even a\n  // moment it can end up scrolling the page and causing confusion so we\n  // kind of need to capture the action at the keydown phase.\n  function checkTab(e) {\n    updateTabbableNodes();\n    if (e.shiftKey && e.target === state.firstTabbableNode) {\n      e.preventDefault();\n      tryFocus(state.lastTabbableNode);\n      return;\n    }\n    if (!e.shiftKey && e.target === state.lastTabbableNode) {\n      e.preventDefault();\n      tryFocus(state.firstTabbableNode);\n      return;\n    }\n  }\n\n  function checkClick(e) {\n    if (config.clickOutsideDeactivates) return;\n    if (container.contains(e.target)) return;\n    e.preventDefault();\n    e.stopImmediatePropagation();\n  }\n\n  function updateTabbableNodes() {\n    var tabbableNodes = tabbable(container);\n    state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode();\n    state.lastTabbableNode =\n      tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode();\n  }\n\n  function tryFocus(node) {\n    if (node === doc.activeElement) return;\n    if (!node || !node.focus) {\n      tryFocus(getInitialFocusNode());\n      return;\n    }\n\n    node.focus();\n    state.mostRecentlyFocusedNode = node;\n    if (isSelectableInput(node)) {\n      node.select();\n    }\n  }\n}\n\nfunction isSelectableInput(node) {\n  return (\n    node.tagName &&\n    node.tagName.toLowerCase() === 'input' &&\n    typeof node.select === 'function'\n  );\n}\n\nfunction isEscapeEvent(e) {\n  return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction isTabEvent(e) {\n  return e.key === 'Tab' || e.keyCode === 9;\n}\n\nfunction delay(fn) {\n  return setTimeout(fn, 0);\n}\n\nmodule.exports = focusTrap;\n","var candidateSelectors = [\n  'input',\n  'select',\n  'textarea',\n  'a[href]',\n  'button',\n  '[tabindex]',\n  'audio[controls]',\n  'video[controls]',\n  '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n  ? function () {}\n  : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n  options = options || {};\n\n  var elementDocument = el.ownerDocument || el;\n  var regularTabbables = [];\n  var orderedTabbables = [];\n\n  var untouchabilityChecker = new UntouchabilityChecker(elementDocument);\n  var candidates = el.querySelectorAll(candidateSelector);\n\n  if (options.includeContainer) {\n    if (matches.call(el, candidateSelector)) {\n      candidates = Array.prototype.slice.apply(candidates);\n      candidates.unshift(el);\n    }\n  }\n\n  var i, candidate, candidateTabindex;\n  for (i = 0; i < candidates.length; i++) {\n    candidate = candidates[i];\n\n    if (!isNodeMatchingSelectorTabbable(candidate, untouchabilityChecker)) continue;\n\n    candidateTabindex = getTabindex(candidate);\n    if (candidateTabindex === 0) {\n      regularTabbables.push(candidate);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        node: candidate,\n      });\n    }\n  }\n\n  var tabbableNodes = orderedTabbables\n    .sort(sortOrderedTabbables)\n    .map(function(a) { return a.node })\n    .concat(regularTabbables);\n\n  return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node, untouchabilityChecker) {\n  if (\n    !isNodeMatchingSelectorFocusable(node, untouchabilityChecker)\n    || isNonTabbableRadio(node)\n    || getTabindex(node) < 0\n  ) {\n    return false;\n  }\n  return true;\n}\n\nfunction isTabbable(node, untouchabilityChecker) {\n  if (!node) throw new Error('No node provided');\n  if (matches.call(node, candidateSelector) === false) return false;\n  return isNodeMatchingSelectorTabbable(node, untouchabilityChecker);\n}\n\nfunction isNodeMatchingSelectorFocusable(node, untouchabilityChecker) {\n  untouchabilityChecker = untouchabilityChecker || new UntouchabilityChecker(node.ownerDocument || node);\n  if (\n    node.disabled\n    || isHiddenInput(node)\n    || untouchabilityChecker.isUntouchable(node)\n  ) {\n    return false;\n  }\n  return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node, untouchabilityChecker) {\n  if (!node) throw new Error('No node provided');\n  if (matches.call(node, focusableCandidateSelector) === false) return false;\n  return isNodeMatchingSelectorFocusable(node, untouchabilityChecker);\n}\n\nfunction getTabindex(node) {\n  var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n  if (!isNaN(tabindexAttr)) return tabindexAttr;\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // so if they don't have a tabindex attribute specifically set, assume it's 0.\n  if (isContentEditable(node)) return 0;\n  return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\n// Array.prototype.find not available in IE.\nfunction find(list, predicate) {\n  for (var i = 0, length = list.length; i < length; i++) {\n    if (predicate(list[i])) return list[i];\n  }\n}\n\nfunction isContentEditable(node) {\n  return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n  return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n  return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n  return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n  return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n  for (var i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked) {\n      return nodes[i];\n    }\n  }\n}\n\nfunction isTabbableRadio(node) {\n  if (!node.name) return true;\n  // This won't account for the edge case where you have radio groups with the same\n  // in separate forms on the same page.\n  var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n  var checked = getCheckedRadio(radioSet);\n  return !checked || checked === node;\n}\n\n// An element is \"untouchable\" if *it or one of its ancestors* has\n// `visibility: hidden` or `display: none`.\nfunction UntouchabilityChecker(elementDocument) {\n  this.doc = elementDocument;\n  // Node cache must be refreshed on every check, in case\n  // the content of the element has changed. The cache contains tuples\n  // mapping nodes to their boolean result.\n  this.cache = [];\n}\n\n// getComputedStyle accurately reflects `visibility: hidden` of ancestors\n// but not `display: none`, so we need to recursively check parents.\nUntouchabilityChecker.prototype.hasDisplayNone = function hasDisplayNone(node, nodeComputedStyle) {\n  if (node.nodeType !== Node.ELEMENT_NODE) return false;\n\n    // Search for a cached result.\n    var cached = find(this.cache, function(item) {\n      return item === node;\n    });\n    if (cached) return cached[1];\n\n    nodeComputedStyle = nodeComputedStyle || this.doc.defaultView.getComputedStyle(node);\n\n    var result = false;\n\n    if (nodeComputedStyle.display === 'none') {\n      result = true;\n    } else if (node.parentNode) {\n      result = this.hasDisplayNone(node.parentNode);\n    }\n\n    this.cache.push([node, result]);\n\n    return result;\n}\n\nUntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) {\n  if (node === this.doc.documentElement) return false;\n  var computedStyle = this.doc.defaultView.getComputedStyle(node);\n  if (this.hasDisplayNone(node, computedStyle)) return true;\n  return computedStyle.visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `<ReplaceTransition>` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * <ReplaceTransition in>\n *   <Fade><div>I appear first</div></Fade>\n *   <Fade><div>I replace the above</div></Fade>\n * </ReplaceTransition>\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ReplaceTransition, _React$Component);\n\n  function ReplaceTransition() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleEnter = function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _this.handleLifecycle('onEnter', 0, args);\n    };\n\n    _this.handleEntering = function () {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return _this.handleLifecycle('onEntering', 0, args);\n    };\n\n    _this.handleEntered = function () {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return _this.handleLifecycle('onEntered', 0, args);\n    };\n\n    _this.handleExit = function () {\n      for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n        args[_key5] = arguments[_key5];\n      }\n\n      return _this.handleLifecycle('onExit', 1, args);\n    };\n\n    _this.handleExiting = function () {\n      for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n        args[_key6] = arguments[_key6];\n      }\n\n      return _this.handleLifecycle('onExiting', 1, args);\n    };\n\n    _this.handleExited = function () {\n      for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n        args[_key7] = arguments[_key7];\n      }\n\n      return _this.handleLifecycle('onExited', 1, args);\n    };\n\n    return _this;\n  }\n\n  var _proto = ReplaceTransition.prototype;\n\n  _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n    var _child$props;\n\n    var children = this.props.children;\n\n    var child = _react.default.Children.toArray(children)[idx];\n\n    if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n    if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        inProp = _this$props.in,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n    var _React$Children$toArr = _react.default.Children.toArray(children),\n        first = _React$Children$toArr[0],\n        second = _React$Children$toArr[1];\n\n    delete props.onEnter;\n    delete props.onEntering;\n    delete props.onEntered;\n    delete props.onExit;\n    delete props.onExiting;\n    delete props.onExited;\n    return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n      key: 'first',\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onEntered: this.handleEntered\n    }) : _react.default.cloneElement(second, {\n      key: 'second',\n      onEnter: this.handleExit,\n      onEntering: this.handleExiting,\n      onEntered: this.handleExited\n    }));\n  };\n\n  return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  in: _propTypes.default.bool.isRequired,\n  children: function children(props, propName) {\n    if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n    return null;\n  }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) _react.Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return (0, _react.cloneElement)(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!(0, _react.isValidElement)(child)) return;\n    var hasPrev = key in prevChildMapping;\n    var hasNext = key in nextChildMapping;\n    var prevChild = prevChildMapping[key];\n    var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = (0, _react.cloneElement)(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","//! moment-timezone.js\n//! version : 0.5.46\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.46\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tfunction closest (num, arr) {\n\t\tvar len = arr.length;\n\t\tif (num < arr[0]) {\n\t\t\treturn 0;\n\t\t} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {\n\t\t\treturn len - 1;\n\t\t} else if (num >= arr[len - 1]) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tvar mid;\n\t\tvar lo = 0;\n\t\tvar hi = len - 1;\n\t\twhile (hi - lo > 1) {\n\t\t\tmid = Math.floor((lo + hi) / 2);\n\t\t\tif (arr[mid] <= num) {\n\t\t\t\tlo = mid;\n\t\t\t} else {\n\t\t\t\thi = mid;\n\t\t\t}\n\t\t}\n\t\treturn hi;\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\ti = closest(target, untils);\n\t\t\tif (i >= 0) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\tlastOffset = last.offset,\n\t\t\toffsets = [last],\n\t\t\tchange, next, nextOffset, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnextOffset = new Date(startYear, i, 1).getTimezoneOffset();\n\t\t\tif (nextOffset !== lastOffset) {\n\t\t\t\t// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets\n\t\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t\tlast = next;\n\t\t\t\tlastOffset = nextOffset;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\tcheckedOffsets = {},\n\t\t\ti, j, offset, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\toffset = offsets[i].offset;\n\t\t\tif (checkedOffsets.hasOwnProperty(offset)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tguessesOffset = guesses[offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckedOffsets[offset] = true;\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tout  = moment.utc.apply(null, args),\n\t\t\tzone;\n\n\t\tif (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","/* eslint-disable import/no-extraneous-dependencies, no-underscore-dangle */\n\nimport moment from 'moment';\n\nexport function formatDay(day, locale = 'en') {\n  return moment(day)\n    .locale(locale)\n    .format('ddd ll');\n}\n\nexport function formatMonthTitle(date, locale = 'en') {\n  return moment(date)\n    .locale(locale)\n    .format('MMMM YYYY');\n}\n\nexport function formatWeekdayShort(day, locale = 'en') {\n  return moment.localeData(locale).weekdaysMin()[day];\n}\n\nexport function formatWeekdayLong(day, locale = 'en') {\n  return moment.localeData(locale).weekdays()[day];\n}\n\nexport function getFirstDayOfWeek(locale = 'en') {\n  return moment.localeData(locale).firstDayOfWeek();\n}\n\nexport function getMonths(locale = 'en') {\n  return moment.localeData(locale).months();\n}\n\nexport function formatDate(date, format = 'L', locale = 'en') {\n  return moment(date)\n    .locale(locale)\n    .format(Array.isArray(format) ? format[0] : format);\n}\n\nexport function parseDate(str, format = 'L', locale = 'en') {\n  const m = moment(str, format, locale, true);\n  if (m.isValid()) {\n    return m.toDate();\n  }\n  return undefined;\n}\n\nexport default {\n  formatDay,\n  formatMonthTitle,\n  formatWeekdayShort,\n  formatWeekdayLong,\n  getFirstDayOfWeek,\n  getMonths,\n  formatDate,\n  parseDate,\n};\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n *   { 'dir': 'left', 'code': 97 },\n *   { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n *   return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n  baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var arrayAggregator = require('./_arrayAggregator'),\n    baseAggregator = require('./_baseAggregator'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n  return function(collection, iteratee) {\n    var func = isArray(collection) ? arrayAggregator : baseAggregator,\n        accumulator = initializer ? initializer() : {};\n\n    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n  };\n}\n\nmodule.exports = createAggregator;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    var value = array[index];\n    setter(accumulator, value, iteratee(value), array);\n  }\n  return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n  baseEach(collection, function(value, key, collection) {\n    setter(accumulator, value, iteratee(value), collection);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","/*!\n * chartjs-plugin-datalabels\n * http://chartjs.org/\n * Version: 0.1.0\n *\n * Copyright 2017 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/chartjs-plugin-datalabels/blob/master/LICENSE.md\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(require('chart.js')) :\n\ttypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\n\t(factory(global.Chart));\n}(this, (function (Chart) { 'use strict';\n\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\n\n/**\n * @module Options\n */\n\nvar helpers$1 = Chart.helpers;\n\nvar defaults = {\n\t/**\n\t * The label box alignment relative to `anchor` ('start'|'center'|'end')\n\t * @member {String|Array|Function}\n\t * @default 'center'\n\t */\n\talign: 'center',\n\n\t/**\n\t * The label box alignment relative to the element ('start'|'center'|'end')\n\t * @member {String|Array|Function}\n\t * @default 'center'\n\t */\n\tanchor: 'center',\n\n\t/**\n\t * The color used to draw the background of the surrounding frame.\n\t * @member {String|Array|Function|null}\n\t * @default null (no background)\n\t */\n\tbackgroundColor: null,\n\n\t/**\n\t * The color used to draw the border of the surrounding frame.\n\t * @member {String|Array|Function|null}\n\t * @default null (no border)\n\t */\n\tborderColor: null,\n\n\t/**\n\t * The border radius used to add rounded corners to the surrounding frame.\n\t * @member {Number|Array|Function}\n\t * @default 0 (not rounded)\n\t */\n\tborderRadius: 0,\n\n\t/**\n\t * The border width of the surrounding frame.\n\t * @member {Number|Array|Function}\n\t * @default 0 (no border)\n\t */\n\tborderWidth: 0,\n\n\t/**\n\t * The color used to draw the label text.\n\t * @member {String|Array|Function}\n\t * @default undefined (use Chart.defaults.global.defaultFontColor)\n\t */\n\tcolor: undefined,\n\n\t/**\n\t * Whether to display labels global (boolean) or per data (function)\n\t * @member {Boolean|Array|Function}\n\t * @default true\n\t */\n\tdisplay: true,\n\n\t/**\n\t * The font options used to draw the label text.\n\t * @member {Object|Array|Function}\n\t * @prop {Boolean} font.family - defaults to Chart.defaults.global.defaultFontFamily\n\t * @prop {Boolean} font.size - defaults to Chart.defaults.global.defaultFontSize\n\t * @prop {Boolean} font.style - defaults to Chart.defaults.global.defaultFontStyle\n\t * @prop {Boolean} font.weight - defaults to 'normal'\n\t * @default Chart.defaults.global.defaultFont.*\n\t */\n\tfont: {\n\t\tfamily: undefined,\n\t\tsize: undefined,\n\t\tstyle: undefined,\n\t\tweight: null\n\t},\n\n\t/**\n\t * The line height (in pixel) to use for multi-lines labels.\n\t * @member {Number|Array|Function|undefined}\n\t * @default 1.2\n\t */\n\tlineHeight: 1.2,\n\n\t/**\n\t * The distance (in pixels) to pull the label away from the anchor point, the direction\n\t * being determined by the `align` value (only applicable if `align` is `start` or `end`).\n\t * @member {Number|Array|Function}\n\t * @default 4\n\t */\n\toffset: 4,\n\n\t/**\n\t * The padding (in pixels) to apply between the text and the surrounding frame.\n\t * @member {Number|Object|Array|Function}\n\t * @prop {Number} padding.top - Space above the text.\n\t * @prop {Number} padding.right - Space on the right of the text.\n\t * @prop {Number} padding.bottom - Space below the text.\n\t * @prop {Number} padding.left - Space on the left of the text.\n\t * @default 4 (all values)\n\t */\n\tpadding: {\n\t\ttop: 4,\n\t\tright: 4,\n\t\tbottom: 4,\n\t\tleft: 4\n\t},\n\n\t/**\n\t * Rotation of the label relative to its center.\n\t * @member {Number|Array|Function}\n\t * @default 0\n\t */\n\trotation: 0,\n\n\t/**\n\t * Text alignment for multi-lines labels ('left'|'right'|'start'|'center'|'end').\n\t * @member {String|Array|Function}\n\t * @default 'start'\n\t */\n\ttextAlign: 'start',\n\n\t/**\n\t * Allows to customize the label text by transforming input data.\n\t * @member {Function|null}\n\t * @prop {*} value - The data value\n\t * @prop {Object} context - The function unique argument:\n\t * @prop {Chart} context.chart - The current chart\n\t * @prop {Number} context.dataIndex - Index of the current data\n\t * @prop {Object} context.dataset - The current dataset\n\t * @prop {Number} context.datasetIndex - Index of the current dataset\n\t * @default data[index]\n\t */\n\tformatter: function(value) {\n\t\tvar label = value;\n\t\tvar keys, klen, k;\n\n\t\tif (helpers$1.isObject(value)) {\n\t\t\tif (!helpers$1.isNullOrUndef(value.label)) {\n\t\t\t\tlabel = value.label;\n\t\t\t} else if (!helpers$1.isNullOrUndef(value.r)) {\n\t\t\t\tlabel = value.r;\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t\tkeys = Object.keys(value);\n\t\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn '' + label;\n\t}\n};\n\nfunction orient(point, origin) {\n\tvar x0 = origin.x;\n\tvar y0 = origin.y;\n\n\tif (x0 === null) {\n\t\treturn {x: 0, y: -1};\n\t}\n\tif (y0 === null) {\n\t\treturn {x: 1, y: 0};\n\t}\n\n\tvar dx = point.x - x0;\n\tvar dy = point.y - y0;\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\n\treturn {\n\t\tx: ln ? dx / ln : 0,\n\t\ty: ln ? dy / ln : -1\n\t};\n}\n\nvar positioners = {\n\tarc: function(vm, anchor) {\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar vx = Math.cos(angle);\n\t\tvar vy = Math.sin(angle);\n\t\tvar r0 = vm.innerRadius;\n\t\tvar r1 = vm.outerRadius;\n\t\tvar d;\n\n\t\tif (anchor === 'start') {\n\t\t\td = r0;\n\t\t} else if (anchor === 'end') {\n\t\t\td = r1;\n\t\t} else {\n\t\t\td = (r0 + r1) / 2;\n\t\t}\n\n\t\treturn {\n\t\t\tx: vm.x + vx * d,\n\t\t\ty: vm.y + vy * d,\n\t\t\tvx: vx,\n\t\t\tvy: vy\n\t\t};\n\t},\n\n\tpoint: function(vm, anchor, origin) {\n\t\tvar v = orient(vm, origin);\n\t\tvar r = vm.radius;\n\t\tvar d = 0;\n\n\t\tif (anchor === 'start') {\n\t\t\td = -r;\n\t\t} else if (anchor === 'end') {\n\t\t\td = r;\n\t\t}\n\n\t\treturn {\n\t\t\tx: vm.x + v.x * d,\n\t\t\ty: vm.y + v.y * d,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t};\n\t},\n\n\trect: function(vm, anchor, origin) {\n\t\tvar horizontal = vm.horizontal;\n\t\tvar size = Math.abs(vm.base - (horizontal ? vm.x : vm.y));\n\t\tvar x = horizontal ? Math.min(vm.x, vm.base) : vm.x;\n\t\tvar y = horizontal ? vm.y : Math.min(vm.y, vm.base);\n\t\tvar v = orient(vm, origin);\n\n\t\tif (anchor === 'center') {\n\t\t\tif (horizontal) {\n\t\t\t\tx += size / 2;\n\t\t\t} else {\n\t\t\t\ty += size / 2;\n\t\t\t}\n\t\t} else if (anchor === 'start' && !horizontal) {\n\t\t\ty += size;\n\t\t} else if (anchor === 'end' && horizontal) {\n\t\t\tx += size;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t};\n\t},\n\n\tfallback: function(vm, anchor, origin) {\n\t\tvar v = orient(vm, origin);\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t};\n\t}\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nChart.defaults.global.plugins.datalabels = defaults;\n\nvar helpers = Chart.helpers;\nvar MODEL_KEY = '$datalabels';\n\n// @todo move this in Chart.helpers.toTextLines\nfunction toTextLines(inputs) {\n\tvar lines = [];\n\tvar input;\n\n\tinputs = [].concat(inputs);\n\twhile (inputs.length) {\n\t\tinput = inputs.pop();\n\t\tif (typeof input === 'string') {\n\t\t\tlines.unshift.apply(lines, input.split('\\n'));\n\t\t} else if (Array.isArray(input)) {\n\t\t\tinputs.push.apply(inputs, input);\n\t\t} else if (!helpers.isNullOrUndef(inputs)) {\n\t\t\tlines.unshift('' + input);\n\t\t}\n\t}\n\n\treturn lines;\n}\n\n// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\n// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\nfunction toFontString(font) {\n\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n// @todo move this in Chart.helpers.canvas.textSize\n// @todo cache calls of measureText if font doesn't change?!\nfunction textSize(ctx, lines, font) {\n\tvar items = [].concat(lines);\n\tvar ilen = items.length;\n\tvar prev = ctx.font;\n\tvar width = 0;\n\tvar i;\n\n\tctx.font = font.string;\n\n\tfor (i = 0; i < ilen; ++i) {\n\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\n\t}\n\n\tctx.font = prev;\n\n\treturn {\n\t\theight: ilen * font.lineHeight,\n\t\twidth: width\n\t};\n}\n\n// @todo move this method in Chart.helpers.options.toFont\nfunction parseFont(value) {\n\tvar global = Chart.defaults.global;\n\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\n\tvar font = {\n\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\n\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\n\t\tsize: size,\n\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\n\t\tweight: helpers.valueOrDefault(value.weight, null),\n\t\tstring: ''\n\t};\n\n\tfont.string = toFontString(font);\n\treturn font;\n}\n\nfunction coordinates(el, model) {\n\tvar point = model.positioner(el._view, model.anchor, model.origin);\n\n\tif (model.align === 'center') {\n\t\t// if aligned center, we don't want to offset the center point\n\t\treturn {x: point.x, y: point.y};\n\t}\n\n\tvar padding = model.padding;\n\tvar rotation = model.rotation;\n\tvar th = model.size.height;\n\tvar tw = model.size.width;\n\tvar vx = point.vx;\n\tvar vy = point.vy;\n\tvar dx = 0;\n\tvar dy = 0;\n\n\tif (model.align === 'start') {\n\t\tvx = -vx;\n\t\tvy = -vy;\n\t}\n\n\t// take in account the label rotation\n\tdx += Math.abs(tw / 2 * Math.cos(rotation)) + Math.abs(th / 2 * Math.sin(rotation));\n\tdy += Math.abs(tw / 2 * Math.sin(rotation)) + Math.abs(th / 2 * Math.cos(rotation));\n\n\t// ... and padding\n\tdx += vx > 0 ? padding.right : padding.left;\n\tdy += vy > 0 ? padding.bottom : padding.top;\n\n\t// ... and borders\n\tdx += model.borderWidth || 0;\n\tdy += model.borderWidth || 0;\n\n\t// ... and explicit offset\n\tdx += model.offset;\n\tdy += model.offset;\n\n\treturn {\n\t\tx: point.x + dx * vx,\n\t\ty: point.y + dy * vy\n\t};\n}\n\nfunction boundingRects(size, padding) {\n\tvar th = size.height;\n\tvar tw = size.width;\n\tvar tx = -tw / 2;\n\tvar ty = -th / 2;\n\n\treturn {\n\t\tframe: {\n\t\t\tx: tx - padding.left,\n\t\t\ty: ty - padding.top,\n\t\t\tw: tw + padding.width,\n\t\t\th: th + padding.height,\n\t\t},\n\t\ttext: {\n\t\t\tx: tx,\n\t\t\ty: ty,\n\t\t\tw: tw,\n\t\t\th: th\n\t\t}\n\t};\n}\n\nfunction drawFrame(ctx, rect, model) {\n\tvar bgColor = model.backgroundColor;\n\tvar borderColor = model.borderColor;\n\tvar borderWidth = model.borderWidth;\n\n\tif (!bgColor && (!borderColor || !borderWidth)) {\n\t\treturn;\n\t}\n\n\tctx.beginPath();\n\n\thelpers.canvas.roundedRect(\n\t\tctx,\n\t\tMath.round(rect.x) - borderWidth / 2,\n\t\tMath.round(rect.y) - borderWidth / 2,\n\t\tMath.round(rect.w) + borderWidth,\n\t\tMath.round(rect.h) + borderWidth,\n\t\tmodel.borderRadius);\n\n\tctx.closePath();\n\n\tif (bgColor) {\n\t\tctx.fillStyle = bgColor;\n\t\tctx.fill();\n\t}\n\n\tif (borderColor && borderWidth) {\n\t\tctx.strokeStyle = borderColor;\n\t\tctx.lineWidth = borderWidth;\n\t\tctx.lineJoin = 'miter';\n\t\tctx.stroke();\n\t}\n}\n\nfunction drawText(ctx, lines, rect, model) {\n\tvar align = model.textAlign;\n\tvar font = model.font;\n\tvar lh = font.lineHeight;\n\tvar color = model.color;\n\tvar ilen = lines.length;\n\tvar x, y, i;\n\n\tif (!ilen || !color) {\n\t\treturn;\n\t}\n\n\tx = rect.x;\n\ty = rect.y + lh / 2;\n\n\tif (align === 'center') {\n\t\tx += rect.w / 2;\n\t} else if (align === 'end' || align === 'right') {\n\t\tx += rect.w;\n\t}\n\n\tctx.font = model.font.string;\n\tctx.fillStyle = color;\n\tctx.textAlign = align;\n\tctx.textBaseline = 'middle';\n\n\tfor (i = 0; i < ilen; ++i) {\n\t\tctx.fillText(\n\t\t\tlines[i],\n\t\t\tMath.round(x),\n\t\t\tMath.round(y),\n\t\t\tMath.round(rect.w));\n\n\t\ty += lh;\n\t}\n}\n\nfunction getPositioner(el) {\n\tif (el instanceof Chart.elements.Arc) {\n\t\treturn positioners.arc;\n\t}\n\tif (el instanceof Chart.elements.Point) {\n\t\treturn positioners.point;\n\t}\n\tif (el instanceof Chart.elements.Rectangle) {\n\t\treturn positioners.rect;\n\t}\n\treturn positioners.fallback;\n}\n\nfunction getScaleOrigin(el) {\n\tvar horizontal = el._model.horizontal;\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\n\n\tif (!scale) {\n\t\treturn null;\n\t}\n\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\n\t}\n\n\tvar pixel = scale.getBasePixel();\n\treturn horizontal ?\n\t\t{x: pixel, y: null} :\n\t\t{x: null, y: pixel};\n}\n\nfunction modelize(el, index, ctx, config, context) {\n\tvar resolve = Chart.helpers.options.resolve;\n\tif (!resolve([config.display, true], context, index)) {\n\t\treturn null;\n\t}\n\n\tvar value = context.dataset.data[index];\n\tvar label = helpers.valueOrDefault(helpers.callback(config.formatter, [value, context]), value);\n\tvar lines = helpers.isNullOrUndef(label) ? [] : toTextLines(label);\n\tif (!lines.length) {\n\t\treturn null;\n\t}\n\n\tvar font = parseFont(resolve([config.font, {}], context, index));\n\tvar model = {\n\t\talign: resolve([config.align, 'center'], context, index),\n\t\tanchor: resolve([config.anchor, 'center'], context, index),\n\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\n\t\tborderColor: resolve([config.borderColor, null], context, index),\n\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\n\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\n\t\tcolor: resolve([config.color, Chart.defaults.global.defaultFontColor], context, index),\n\t\tfont: font,\n\t\tlines: lines,\n\t\toffset: resolve([config.offset, 0], context, index),\n\t\tpadding: helpers.options.toPadding(resolve([config.padding, 0], context, index)),\n\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\n\t\torigin: getScaleOrigin(el),\n\t\tpositioner: getPositioner(el),\n\t\tsize: textSize(ctx, lines, font)\n\t};\n\n\treturn model;\n}\n\nfunction configure(dataset, options) {\n\tvar override = dataset.datalabels;\n\tvar config = {};\n\n\tif (override === false) {\n\t\treturn null;\n\t}\n\tif (override === true) {\n\t\toverride = {};\n\t}\n\n\treturn helpers.merge(config, [options, override]);\n}\n\nChart.plugins.register({\n\tid: 'datalabels',\n\n\tafterDatasetUpdate: function(chart, args, options) {\n\t\tvar dataset = chart.data.datasets[args.index];\n\t\tvar config = configure(dataset, options);\n\t\tvar display = config && config.display;\n\t\tvar elements = args.meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar ctx = chart.ctx;\n\t\tvar i, el;\n\n\t\tctx.save();\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tel = elements[i];\n\t\t\tel[MODEL_KEY] = display && el && !el.hidden ?\n\t\t\t\tmodelize(el, i, ctx, config, {\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tdataIndex: i,\n\t\t\t\t\tdataset: dataset,\n\t\t\t\t\tdatasetIndex: args.index\n\t\t\t\t}) :\n\t\t\t\tnull;\n\t\t}\n\n\t\tctx.restore();\n\t},\n\n\tafterDatasetDraw: function(chart, args) {\n\t\tvar elements = args.meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar ctx = chart.ctx;\n\t\tvar i, el, model, center, rects;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tel = elements[i];\n\t\t\tmodel = el[MODEL_KEY];\n\t\t\tif (!model) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcenter = coordinates(el, model);\n\t\t\trects = boundingRects(model.size, model.padding);\n\n\t\t\tctx.save();\n\t\t\tctx.translate(Math.round(center.x), Math.round(center.y));\n\t\t\tctx.rotate(model.rotation);\n\n\t\t\tdrawFrame(ctx, rects.frame, model);\n\t\t\tdrawText(ctx, model.lines, rects.text, model);\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\n})));\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ReCAPTCHA = function (_React$Component) {\n  (0, _inherits3.default)(ReCAPTCHA, _React$Component);\n\n  function ReCAPTCHA() {\n    (0, _classCallCheck3.default)(this, ReCAPTCHA);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this));\n\n    _this.state = {};\n    _this.handleExpired = _this.handleExpired.bind(_this);\n    _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_this);\n    return _this;\n  }\n\n  ReCAPTCHA.prototype.getValue = function getValue() {\n    if (this.props.grecaptcha && this.state.widgetId !== undefined) {\n      return this.props.grecaptcha.getResponse(this.state.widgetId);\n    }\n    return null;\n  };\n\n  ReCAPTCHA.prototype.getWidgetId = function getWidgetId() {\n    if (this.props.grecaptcha && this.state.widgetId !== undefined) {\n      return this.state.widgetId;\n    }\n    return null;\n  };\n\n  ReCAPTCHA.prototype.execute = function execute() {\n    var grecaptcha = this.props.grecaptcha;\n    var widgetId = this.state.widgetId;\n\n\n    if (grecaptcha && widgetId !== undefined) {\n      return grecaptcha.execute(widgetId);\n    } else {\n      this._executeRequested = true;\n    }\n  };\n\n  ReCAPTCHA.prototype.reset = function reset() {\n    if (this.props.grecaptcha && this.state.widgetId !== undefined) {\n      this.props.grecaptcha.reset(this.state.widgetId);\n    }\n  };\n\n  ReCAPTCHA.prototype.handleExpired = function handleExpired() {\n    if (this.props.onExpired) {\n      this.props.onExpired();\n    } else if (this.props.onChange) {\n      this.props.onChange(null);\n    }\n  };\n\n  ReCAPTCHA.prototype.explicitRender = function explicitRender(cb) {\n    if (this.props.grecaptcha && this.state.widgetId === undefined) {\n      var id = this.props.grecaptcha.render(this.captcha, {\n        sitekey: this.props.sitekey,\n        callback: this.props.onChange,\n        theme: this.props.theme,\n        type: this.props.type,\n        tabindex: this.props.tabindex,\n        \"expired-callback\": this.handleExpired,\n        size: this.props.size,\n        stoken: this.props.stoken,\n        badge: this.props.badge\n      });\n      this.setState({\n        widgetId: id\n      }, cb);\n    }\n    if (this._executeRequested && this.props.grecaptcha && this.state.widgetId !== undefined) {\n      this._executeRequested = false;\n      this.execute();\n    }\n  };\n\n  ReCAPTCHA.prototype.componentDidMount = function componentDidMount() {\n    this.explicitRender();\n  };\n\n  ReCAPTCHA.prototype.componentDidUpdate = function componentDidUpdate() {\n    this.explicitRender();\n  };\n\n  ReCAPTCHA.prototype.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n    this.captcha = elem;\n  };\n\n  ReCAPTCHA.prototype.render = function render() {\n    // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n    /* eslint-disable no-unused-vars */\n    var _props = this.props,\n        sitekey = _props.sitekey,\n        onChange = _props.onChange,\n        theme = _props.theme,\n        type = _props.type,\n        tabindex = _props.tabindex,\n        onExpired = _props.onExpired,\n        size = _props.size,\n        stoken = _props.stoken,\n        grecaptcha = _props.grecaptcha,\n        badge = _props.badge,\n        childProps = (0, _objectWithoutProperties3.default)(_props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"size\", \"stoken\", \"grecaptcha\", \"badge\"]);\n    /* eslint-enable no-unused-vars */\n\n    return _react2.default.createElement(\"div\", (0, _extends3.default)({}, childProps, { ref: this.handleRecaptchaRef }));\n  };\n\n  return ReCAPTCHA;\n}(_react2.default.Component);\n\nexports.default = ReCAPTCHA;\n\n\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n  sitekey: _propTypes2.default.string.isRequired,\n  onChange: _propTypes2.default.func.isRequired,\n  grecaptcha: _propTypes2.default.object,\n  theme: _propTypes2.default.oneOf([\"dark\", \"light\"]),\n  type: _propTypes2.default.oneOf([\"image\", \"audio\"]),\n  tabindex: _propTypes2.default.number,\n  onExpired: _propTypes2.default.func,\n  size: _propTypes2.default.oneOf([\"compact\", \"normal\", \"invisible\"]),\n  stoken: _propTypes2.default.string,\n  badge: _propTypes2.default.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n  theme: \"light\",\n  type: \"image\",\n  tabindex: 0,\n  size: \"normal\",\n  badge: \"bottomright\"\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($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++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = 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 ? ObjectProto : null;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\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\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\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 _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\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 gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _map = require(\"babel-runtime/core-js/map\");\n\nvar _map2 = _interopRequireDefault(_map);\n\nexports.default = makeAsyncScript;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SCRIPT_MAP = new _map2.default();\n\n// A counter used to generate a unique id for each component that uses the function\nvar idCount = 0;\n\nfunction makeAsyncScript(Component, scriptURL, options) {\n  options = options || {};\n  var wrappedComponentName = Component.displayName || Component.name || \"Component\";\n\n  var AsyncScriptLoader = function (_React$Component) {\n    (0, _inherits3.default)(AsyncScriptLoader, _React$Component);\n\n    function AsyncScriptLoader() {\n      (0, _classCallCheck3.default)(this, AsyncScriptLoader);\n\n      var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this));\n\n      _this.state = {};\n      return _this;\n    }\n\n    AsyncScriptLoader.prototype.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n      if (!this.__scriptLoaderID) {\n        this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n      }\n      return this.__scriptLoaderID;\n    };\n\n    AsyncScriptLoader.prototype.getComponent = function getComponent() {\n      return this.childComponent;\n    };\n\n    AsyncScriptLoader.prototype.componentDidMount = function componentDidMount() {\n      var _this2 = this;\n\n      var key = this.asyncScriptLoaderGetScriptLoaderID();\n      var _options = options,\n          globalName = _options.globalName,\n          callbackName = _options.callbackName;\n\n      if (globalName && typeof window[globalName] !== \"undefined\") {\n        SCRIPT_MAP.set(scriptURL, { loaded: true, observers: new _map2.default() });\n      }\n\n      if (SCRIPT_MAP.has(scriptURL)) {\n        var entry = SCRIPT_MAP.get(scriptURL);\n        if (entry && (entry.loaded || entry.errored)) {\n          this.asyncScriptLoaderHandleLoad(entry);\n          return;\n        }\n        entry.observers.set(key, function (entry) {\n          return _this2.asyncScriptLoaderHandleLoad(entry);\n        });\n        return;\n      }\n\n      var observers = new _map2.default();\n      observers.set(key, function (entry) {\n        return _this2.asyncScriptLoaderHandleLoad(entry);\n      });\n      SCRIPT_MAP.set(scriptURL, {\n        loaded: false,\n        observers: observers\n      });\n\n      var script = document.createElement(\"script\");\n\n      script.src = scriptURL;\n      script.async = 1;\n\n      var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n        if (SCRIPT_MAP.has(scriptURL)) {\n          var mapEntry = SCRIPT_MAP.get(scriptURL);\n          var observersMap = mapEntry.observers;\n\n          for (var _iterator = observersMap, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {\n            var _ref;\n\n            if (_isArray) {\n              if (_i >= _iterator.length) break;\n              _ref = _iterator[_i++];\n            } else {\n              _i = _iterator.next();\n              if (_i.done) break;\n              _ref = _i.value;\n            }\n\n            var _ref2 = _ref,\n                obsKey = _ref2[0],\n                observer = _ref2[1];\n\n            if (func(observer)) {\n              observersMap.delete(obsKey);\n            }\n          }\n        }\n      };\n\n      if (callbackName && typeof window !== \"undefined\") {\n        window[callbackName] = AsyncScriptLoader.asyncScriptLoaderTriggerOnScriptLoaded;\n      }\n\n      script.onload = function () {\n        var mapEntry = SCRIPT_MAP.get(scriptURL);\n        if (mapEntry) {\n          mapEntry.loaded = true;\n          callObserverFuncAndRemoveObserver(function (observer) {\n            if (callbackName) {\n              return false;\n            }\n            observer(mapEntry);\n            return true;\n          });\n        }\n      };\n      script.onerror = function (event) {\n        var mapEntry = SCRIPT_MAP.get(scriptURL);\n        if (mapEntry) {\n          mapEntry.errored = true;\n          callObserverFuncAndRemoveObserver(function (observer) {\n            observer(mapEntry);\n            return true;\n          });\n        }\n      };\n\n      // (old) MSIE browsers may call \"onreadystatechange\" instead of \"onload\"\n      script.onreadystatechange = function () {\n        if (_this2.readyState === \"loaded\") {\n          // wait for other events, then call onload if default onload hadn't been called\n          window.setTimeout(function () {\n            var mapEntry = SCRIPT_MAP.get(scriptURL);\n            if (mapEntry && mapEntry.loaded !== true) {\n              script.onload();\n            }\n          }, 0);\n        }\n      };\n\n      document.body.appendChild(script);\n    };\n\n    AsyncScriptLoader.prototype.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n      this.setState(state, this.props.asyncScriptOnLoad);\n    };\n\n    AsyncScriptLoader.prototype.componentWillUnmount = function componentWillUnmount() {\n      // Remove tag script\n      if (options.removeOnUnmount === true) {\n        var allScripts = document.getElementsByTagName(\"script\");\n        for (var i = 0; i < allScripts.length; i += 1) {\n          if (allScripts[i].src.indexOf(scriptURL) > -1) {\n            if (allScripts[i].parentNode) {\n              allScripts[i].parentNode.removeChild(allScripts[i]);\n            }\n          }\n        }\n      }\n      // Clean the observer entry\n      var mapEntry = SCRIPT_MAP.get(scriptURL);\n      if (mapEntry) {\n        mapEntry.observers.delete(this.asyncScriptLoaderGetScriptLoaderID());\n        if (options.removeOnUnmount === true) {\n          SCRIPT_MAP.delete(scriptURL);\n        }\n      }\n    };\n\n    AsyncScriptLoader.prototype.render = function render() {\n      var _this3 = this;\n\n      var globalName = options.globalName;\n      var _props = this.props,\n          asyncScriptOnLoad = _props.asyncScriptOnLoad,\n          childProps = (0, _objectWithoutProperties3.default)(_props, [\"asyncScriptOnLoad\"]);\n\n      if (globalName && typeof window !== \"undefined\") {\n        childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n      }\n      return _react2.default.createElement(Component, (0, _extends3.default)({ ref: function ref(comp) {\n          _this3.childComponent = comp;\n        } }, childProps));\n    };\n\n    return AsyncScriptLoader;\n  }(_react2.default.Component);\n\n  AsyncScriptLoader.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n  AsyncScriptLoader.propTypes = {\n    asyncScriptOnLoad: _propTypes2.default.func\n  };\n  AsyncScriptLoader.asyncScriptLoaderTriggerOnScriptLoaded = function () {\n    var mapEntry = SCRIPT_MAP.get(scriptURL);\n    if (!mapEntry || !mapEntry.loaded) {\n      throw new Error(\"Script is not loaded.\");\n    }\n    for (var _iterator2 = mapEntry.observers.values(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {\n      var _ref3;\n\n      if (_isArray2) {\n        if (_i2 >= _iterator2.length) break;\n        _ref3 = _iterator2[_i2++];\n      } else {\n        _i2 = _iterator2.next();\n        if (_i2.done) break;\n        _ref3 = _i2.value;\n      }\n\n      var observer = _ref3;\n\n      observer(mapEntry);\n    }\n    delete window[options.callbackName];\n  };\n\n  if (options.exposeFuncs) {\n    var _loop = function _loop() {\n      if (_isArray3) {\n        if (_i3 >= _iterator3.length) return \"break\";\n        _ref4 = _iterator3[_i3++];\n      } else {\n        _i3 = _iterator3.next();\n        if (_i3.done) return \"break\";\n        _ref4 = _i3.value;\n      }\n\n      var funcToExpose = _ref4;\n\n      /* eslint-disable no-loop-func */\n      AsyncScriptLoader.prototype[funcToExpose] = function () {\n        var _getComponent;\n\n        return (_getComponent = this.getComponent())[funcToExpose].apply(_getComponent, arguments);\n      };\n      /* eslint-enable no-loop-func */\n    };\n\n    for (var _iterator3 = options.exposeFuncs, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {\n      var _ref4;\n\n      var _ret = _loop();\n\n      if (_ret === \"break\") break;\n    }\n  }\n  return AsyncScriptLoader;\n}","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n  var iterFn = get(it);\n  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n  return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n  // 23.1.3.6 Map.prototype.get(key)\n  get: function get(key) {\n    var entry = strong.getEntry(validate(this, MAP), key);\n    return entry && entry.v;\n  },\n  // 23.1.3.9 Map.prototype.set(key, value)\n  set: function set(key, value) {\n    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n  }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n  // fast case\n  var index = fastKey(key);\n  var entry;\n  if (index !== 'F') return that._i[index];\n  // frozen object case\n  for (entry = that._f; entry; entry = entry.n) {\n    if (entry.k == key) return entry;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;         // collection type\n      that._i = create(null); // index\n      that._f = undefined;    // first entry\n      that._l = undefined;    // last entry\n      that[SIZE] = 0;         // size\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.1.3.1 Map.prototype.clear()\n      // 23.2.3.2 Set.prototype.clear()\n      clear: function clear() {\n        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n          entry.r = true;\n          if (entry.p) entry.p = entry.p.n = undefined;\n          delete data[entry.i];\n        }\n        that._f = that._l = undefined;\n        that[SIZE] = 0;\n      },\n      // 23.1.3.3 Map.prototype.delete(key)\n      // 23.2.3.4 Set.prototype.delete(value)\n      'delete': function (key) {\n        var that = validate(this, NAME);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.n;\n          var prev = entry.p;\n          delete that._i[entry.i];\n          entry.r = true;\n          if (prev) prev.n = next;\n          if (next) next.p = prev;\n          if (that._f == entry) that._f = next;\n          if (that._l == entry) that._l = prev;\n          that[SIZE]--;\n        } return !!entry;\n      },\n      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        validate(this, NAME);\n        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n        var entry;\n        while (entry = entry ? entry.n : this._f) {\n          f(entry.v, entry.k, this);\n          // revert to the last existing entry\n          while (entry && entry.r) entry = entry.p;\n        }\n      },\n      // 23.1.3.7 Map.prototype.has(key)\n      // 23.2.3.7 Set.prototype.has(value)\n      has: function has(key) {\n        return !!getEntry(validate(this, NAME), key);\n      }\n    });\n    if (DESCRIPTORS) dP(C.prototype, 'size', {\n      get: function () {\n        return validate(this, NAME)[SIZE];\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var entry = getEntry(that, key);\n    var prev, index;\n    // change existing entry\n    if (entry) {\n      entry.v = value;\n    // create new entry\n    } else {\n      that._l = entry = {\n        i: index = fastKey(key, true), // <- index\n        k: key,                        // <- key\n        v: value,                      // <- value\n        p: prev = that._l,             // <- previous entry\n        n: undefined,                  // <- next entry\n        r: false                       // <- removed\n      };\n      if (!that._f) that._f = entry;\n      if (prev) prev.n = entry;\n      that[SIZE]++;\n      // add to index\n      if (index !== 'F') that._i[index] = entry;\n    } return that;\n  },\n  getEntry: getEntry,\n  setStrong: function (C, NAME, IS_MAP) {\n    // add .keys, .values, .entries, [@@iterator]\n    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n    $iterDefine(C, NAME, function (iterated, kind) {\n      this._t = validate(iterated, NAME); // target\n      this._k = kind;                     // kind\n      this._l = undefined;                // previous\n    }, function () {\n      var that = this;\n      var kind = that._k;\n      var entry = that._l;\n      // revert to the last existing entry\n      while (entry && entry.r) entry = entry.p;\n      // get next entry\n      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n        // or finish the iteration\n        that._t = undefined;\n        return step(1);\n      }\n      // return step by kind\n      if (kind == 'keys') return step(0, entry.k);\n      if (kind == 'values') return step(0, entry.v);\n      return step(0, [entry.k, entry.v]);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // add [@@species], 23.1.2.2, 23.2.2.2\n    setSpecies(NAME);\n  }\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    C = wrapper(function (target, iterable) {\n      anInstance(target, C, NAME, '_c');\n      target._c = new Base();\n      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n    });\n    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n      var IS_ADDER = KEY == 'add' || KEY == 'set';\n      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n        anInstance(this, C, KEY);\n        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n        var result = this._c[KEY](a === 0 ? 0 : a, b);\n        return IS_ADDER ? this : result;\n      });\n    });\n    IS_WEAK || dP(C.prototype, 'size', {\n      get: function () {\n        return this._c.size;\n      }\n    });\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F, O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\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  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n  return function toJSON() {\n    if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n    return from(this);\n  };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n  var result = [];\n  forOf(iter, false, result.push, result, ITERATOR);\n  return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { of: function of() {\n    var length = arguments.length;\n    var A = new Array(length);\n    while (length--) A[length] = arguments[length];\n    return new this(A);\n  } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n    var mapFn = arguments[1];\n    var mapping, A, n, cb;\n    aFunction(this);\n    mapping = mapFn !== undefined;\n    if (mapping) aFunction(mapFn);\n    if (source == undefined) return new this();\n    A = [];\n    if (mapping) {\n      n = 0;\n      cb = ctx(mapFn, arguments[2], 2);\n      forOf(source, false, function (nextItem) {\n        A.push(cb(nextItem, n++));\n      });\n    } else {\n      forOf(source, false, A.push, A);\n    }\n    return new this(A);\n  } });\n};\n","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Marker as LeafletMarker } from 'leaflet';\nimport React from 'react';\nimport { LeafletProvider, withLeaflet } from './context';\nimport MapLayer from './MapLayer';\n\nvar Marker = /*#__PURE__*/function (_MapLayer) {\n  _inheritsLoose(Marker, _MapLayer);\n\n  function Marker() {\n    return _MapLayer.apply(this, arguments) || this;\n  }\n\n  var _proto = Marker.prototype;\n\n  _proto.createLeafletElement = function createLeafletElement(props) {\n    var el = new LeafletMarker(props.position, this.getOptions(props));\n    this.contextValue = _extends(_extends({}, props.leaflet), {}, {\n      popupContainer: el\n    });\n    return el;\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n    if (toProps.position !== fromProps.position) {\n      this.leafletElement.setLatLng(toProps.position);\n    }\n\n    if (toProps.icon !== fromProps.icon) {\n      this.leafletElement.setIcon(toProps.icon);\n    }\n\n    if (toProps.zIndexOffset !== fromProps.zIndexOffset) {\n      this.leafletElement.setZIndexOffset(toProps.zIndexOffset);\n    }\n\n    if (toProps.opacity !== fromProps.opacity) {\n      this.leafletElement.setOpacity(toProps.opacity);\n    }\n\n    if (toProps.draggable !== fromProps.draggable) {\n      if (toProps.draggable === true) {\n        this.leafletElement.dragging.enable();\n      } else {\n        this.leafletElement.dragging.disable();\n      }\n    }\n  };\n\n  _proto.render = function render() {\n    var children = this.props.children;\n    return children == null || this.contextValue == null ? null : /*#__PURE__*/React.createElement(LeafletProvider, {\n      value: this.contextValue\n    }, children);\n  };\n\n  return Marker;\n}(MapLayer);\n\nexport default withLeaflet(Marker);","\"use strict\";\n\nexport default function omit(obj) {\n  for (var _len = arguments.length, keysToOmit = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    keysToOmit[_key - 1] = arguments[_key];\n  }\n\n  return Object.keys(obj).reduce(function (acc, key) {\n    if (keysToOmit.indexOf(key) === -1) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { latLngBounds, Map as LeafletMap } from 'leaflet';\nimport React from 'react';\nimport { LeafletProvider } from './context';\nimport MapEvented from './MapEvented';\nimport updateClassName from './utils/updateClassName';\nimport omit from './utils/omit';\nvar OTHER_PROPS = ['children', 'className', 'id', 'style', 'useFlyTo', 'whenReady'];\n\nvar normalizeCenter = function normalizeCenter(pos) {\n  return Array.isArray(pos) ? [pos[0], pos[1]] : [pos.lat, pos.lon ? pos.lon : pos.lng];\n};\n\nvar Map = /*#__PURE__*/function (_MapEvented) {\n  _inheritsLoose(Map, _MapEvented);\n\n  function Map(props) {\n    var _this;\n\n    _this = _MapEvented.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"className\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"contextValue\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"container\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"viewport\", {\n      center: undefined,\n      zoom: undefined\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"_ready\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"_updating\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"onViewportChange\", function () {\n      var center = _this.leafletElement.getCenter();\n\n      _this.viewport = {\n        center: center ? [center.lat, center.lng] : undefined,\n        zoom: _this.leafletElement.getZoom()\n      };\n\n      if (_this.props.onViewportChange && !_this._updating) {\n        _this.props.onViewportChange(_this.viewport);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onViewportChanged\", function () {\n      if (_this.props.onViewportChanged && !_this._updating) {\n        _this.props.onViewportChanged(_this.viewport);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"bindContainer\", function (container) {\n      _this.container = container;\n    });\n\n    _this.className = props.className;\n    return _this;\n  }\n\n  var _proto = Map.prototype;\n\n  _proto.createLeafletElement = function createLeafletElement(props) {\n    var viewport = props.viewport,\n        options = _objectWithoutPropertiesLoose(props, [\"viewport\"]);\n\n    if (viewport) {\n      if (viewport.center) {\n        options.center = viewport.center;\n      }\n\n      if (typeof viewport.zoom === 'number') {\n        options.zoom = viewport.zoom;\n      }\n    }\n\n    return new LeafletMap(this.container, options);\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n    this._updating = true;\n    var bounds = toProps.bounds,\n        boundsOptions = toProps.boundsOptions,\n        boxZoom = toProps.boxZoom,\n        center = toProps.center,\n        className = toProps.className,\n        doubleClickZoom = toProps.doubleClickZoom,\n        dragging = toProps.dragging,\n        keyboard = toProps.keyboard,\n        maxBounds = toProps.maxBounds,\n        scrollWheelZoom = toProps.scrollWheelZoom,\n        tap = toProps.tap,\n        touchZoom = toProps.touchZoom,\n        useFlyTo = toProps.useFlyTo,\n        viewport = toProps.viewport,\n        zoom = toProps.zoom;\n    updateClassName(this.container, fromProps.className, className);\n\n    if (viewport && viewport !== fromProps.viewport) {\n      var c = viewport.center ? viewport.center : center;\n      var z = viewport.zoom == null ? zoom : viewport.zoom;\n\n      if (useFlyTo === true) {\n        this.leafletElement.flyTo(c, z, this.getZoomPanOptions(toProps));\n      } else {\n        this.leafletElement.setView(c, z, this.getZoomPanOptions(toProps));\n      }\n    } else if (center && this.shouldUpdateCenter(center, fromProps.center)) {\n      if (useFlyTo === true) {\n        this.leafletElement.flyTo(center, zoom, this.getZoomPanOptions(toProps));\n      } else {\n        this.leafletElement.setView(center, zoom, this.getZoomPanOptions(toProps));\n      }\n    } else if (typeof zoom === 'number' && zoom !== fromProps.zoom) {\n      if (fromProps.zoom == null) {\n        this.leafletElement.setView(center, zoom, this.getZoomPanOptions(toProps));\n      } else {\n        this.leafletElement.setZoom(zoom, this.getZoomPanOptions(toProps));\n      }\n    }\n\n    if (maxBounds && this.shouldUpdateBounds(maxBounds, fromProps.maxBounds)) {\n      this.leafletElement.setMaxBounds(maxBounds);\n    }\n\n    if (bounds && (this.shouldUpdateBounds(bounds, fromProps.bounds) || boundsOptions !== fromProps.boundsOptions)) {\n      if (useFlyTo === true) {\n        this.leafletElement.flyToBounds(bounds, this.getFitBoundsOptions(toProps));\n      } else {\n        this.leafletElement.fitBounds(bounds, this.getFitBoundsOptions(toProps));\n      }\n    }\n\n    if (boxZoom !== fromProps.boxZoom) {\n      if (boxZoom === true) {\n        this.leafletElement.boxZoom.enable();\n      } else {\n        this.leafletElement.boxZoom.disable();\n      }\n    }\n\n    if (doubleClickZoom !== fromProps.doubleClickZoom) {\n      if (doubleClickZoom === true || typeof doubleClickZoom === 'string') {\n        this.leafletElement.options.doubleClickZoom = doubleClickZoom;\n        this.leafletElement.doubleClickZoom.enable();\n      } else {\n        this.leafletElement.doubleClickZoom.disable();\n      }\n    }\n\n    if (dragging !== fromProps.dragging) {\n      if (dragging === true) {\n        this.leafletElement.dragging.enable();\n      } else {\n        this.leafletElement.dragging.disable();\n      }\n    }\n\n    if (keyboard !== fromProps.keyboard) {\n      if (keyboard === true) {\n        this.leafletElement.keyboard.enable();\n      } else {\n        this.leafletElement.keyboard.disable();\n      }\n    }\n\n    if (scrollWheelZoom !== fromProps.scrollWheelZoom) {\n      if (scrollWheelZoom === true || typeof scrollWheelZoom === 'string') {\n        this.leafletElement.options.scrollWheelZoom = scrollWheelZoom;\n        this.leafletElement.scrollWheelZoom.enable();\n      } else {\n        this.leafletElement.scrollWheelZoom.disable();\n      }\n    }\n\n    if (tap !== fromProps.tap) {\n      if (tap === true) {\n        this.leafletElement.tap.enable();\n      } else {\n        this.leafletElement.tap.disable();\n      }\n    }\n\n    if (touchZoom !== fromProps.touchZoom) {\n      if (touchZoom === true || typeof touchZoom === 'string') {\n        this.leafletElement.options.touchZoom = touchZoom;\n        this.leafletElement.touchZoom.enable();\n      } else {\n        this.leafletElement.touchZoom.disable();\n      }\n    }\n\n    this._updating = false;\n  };\n\n  _proto.getZoomPanOptions = function getZoomPanOptions(props) {\n    var animate = props.animate,\n        duration = props.duration,\n        easeLinearity = props.easeLinearity,\n        noMoveStart = props.noMoveStart;\n    return {\n      animate: animate,\n      duration: duration,\n      easeLinearity: easeLinearity,\n      noMoveStart: noMoveStart\n    };\n  };\n\n  _proto.getFitBoundsOptions = function getFitBoundsOptions(props) {\n    var zoomPanOptions = this.getZoomPanOptions(props);\n    return _extends(_extends({}, zoomPanOptions), props.boundsOptions);\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    var props = omit.apply(void 0, [this.props].concat(OTHER_PROPS));\n    this.leafletElement = this.createLeafletElement(props);\n    this.leafletElement.on('move', this.onViewportChange);\n    this.leafletElement.on('moveend', this.onViewportChanged);\n\n    if (props.bounds != null) {\n      this.leafletElement.fitBounds(props.bounds, this.getFitBoundsOptions(props));\n    }\n\n    this.contextValue = {\n      layerContainer: this.leafletElement,\n      map: this.leafletElement\n    };\n\n    _MapEvented.prototype.componentDidMount.call(this);\n\n    this.forceUpdate(); // Re-render now that leafletElement is created\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this._ready === false) {\n      this._ready = true;\n\n      if (this.props.whenReady) {\n        this.leafletElement.whenReady(this.props.whenReady);\n      }\n    }\n\n    _MapEvented.prototype.componentDidUpdate.call(this, prevProps);\n\n    this.updateLeafletElement(prevProps, this.props);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    _MapEvented.prototype.componentWillUnmount.call(this);\n\n    this.leafletElement.off('move', this.onViewportChange);\n    this.leafletElement.off('moveend', this.onViewportChanged); // The canvas renderer uses requestAnimationFrame, making a deferred call to a deleted object\n    // When preferCanvas is set, use simpler teardown logic\n\n    if (this.props.preferCanvas === true) {\n      this.leafletElement._initEvents(true);\n\n      this.leafletElement._stop();\n    } else {\n      this.leafletElement.remove();\n    }\n  };\n\n  _proto.shouldUpdateCenter = function shouldUpdateCenter(next, prev) {\n    if (!prev) return true;\n    next = normalizeCenter(next);\n    prev = normalizeCenter(prev);\n    return next[0] !== prev[0] || next[1] !== prev[1];\n  };\n\n  _proto.shouldUpdateBounds = function shouldUpdateBounds(next, prev) {\n    return prev ? !latLngBounds(next).equals(latLngBounds(prev)) : true;\n  };\n\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: this.className,\n      id: this.props.id,\n      ref: this.bindContainer,\n      style: this.props.style\n    }, this.contextValue ? /*#__PURE__*/React.createElement(LeafletProvider, {\n      value: this.contextValue\n    }, this.props.children) : null);\n  };\n\n  return Map;\n}(MapEvented);\n\nexport { Map as default };","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { GridLayer as LeafletGridLayer } from 'leaflet';\nimport MapLayer from './MapLayer';\n\nvar GridLayer = /*#__PURE__*/function (_MapLayer) {\n  _inheritsLoose(GridLayer, _MapLayer);\n\n  function GridLayer() {\n    return _MapLayer.apply(this, arguments) || this;\n  }\n\n  var _proto = GridLayer.prototype;\n\n  _proto.createLeafletElement = function createLeafletElement(props) {\n    return new LeafletGridLayer(this.getOptions(props));\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n    var opacity = toProps.opacity,\n        zIndex = toProps.zIndex;\n\n    if (opacity !== fromProps.opacity) {\n      this.leafletElement.setOpacity(opacity);\n    }\n\n    if (zIndex !== fromProps.zIndex) {\n      this.leafletElement.setZIndex(zIndex);\n    }\n  };\n\n  _proto.getOptions = function getOptions(props) {\n    var options = _extends({}, _MapLayer.prototype.getOptions.call(this, props));\n\n    var map = props.leaflet.map;\n\n    if (map != null) {\n      // $FlowFixMe: Object spread\n      if (options.maxZoom == null && map.options.maxZoom != null) {\n        // $FlowFixMe: Object spread\n        options.maxZoom = map.options.maxZoom;\n      } // $FlowFixMe: Object spread\n\n\n      if (options.minZoom == null && map.options.minZoom != null) {\n        // $FlowFixMe: Object spread\n        options.minZoom = map.options.minZoom;\n      }\n    }\n\n    return options;\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return GridLayer;\n}(MapLayer);\n\nexport { GridLayer as default };","\"use strict\";\n\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { TileLayer as LeafletTileLayer } from 'leaflet';\nimport { withLeaflet } from './context';\nimport GridLayer from './GridLayer';\n\nvar TileLayer = /*#__PURE__*/function (_GridLayer) {\n  _inheritsLoose(TileLayer, _GridLayer);\n\n  function TileLayer() {\n    return _GridLayer.apply(this, arguments) || this;\n  }\n\n  var _proto = TileLayer.prototype;\n\n  _proto.createLeafletElement = function createLeafletElement(props) {\n    return new LeafletTileLayer(props.url, this.getOptions(props));\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n    _GridLayer.prototype.updateLeafletElement.call(this, fromProps, toProps);\n\n    if (toProps.url !== fromProps.url) {\n      this.leafletElement.setUrl(toProps.url);\n    }\n  };\n\n  return TileLayer;\n}(GridLayer);\n\nexport default withLeaflet(TileLayer);","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Popup as LeafletPopup } from 'leaflet';\nimport { withLeaflet } from './context';\nimport DivOverlay from './DivOverlay';\n\nvar Popup = /*#__PURE__*/function (_DivOverlay) {\n  _inheritsLoose(Popup, _DivOverlay);\n\n  function Popup() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _DivOverlay.call.apply(_DivOverlay, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"onPopupOpen\", function (_ref) {\n      var popup = _ref.popup;\n\n      if (popup === _this.leafletElement) {\n        _this.onOpen();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPopupClose\", function (_ref2) {\n      var popup = _ref2.popup;\n\n      if (popup === _this.leafletElement) {\n        _this.onClose();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onRender\", function () {\n      if (_this.props.autoPan !== false && _this.leafletElement.isOpen()) {\n        if (_this.leafletElement._map && _this.leafletElement._map._panAnim) {\n          _this.leafletElement._map._panAnim = undefined;\n        }\n\n        _this.leafletElement._adjustPan();\n      }\n    });\n\n    return _this;\n  }\n\n  var _proto = Popup.prototype;\n\n  _proto.getOptions = function getOptions(props) {\n    return _extends(_extends({}, _DivOverlay.prototype.getOptions.call(this, props)), {}, {\n      autoPan: false\n    });\n  };\n\n  _proto.createLeafletElement = function createLeafletElement(props) {\n    var options = this.getOptions(props);\n    options.autoPan = props.autoPan !== false;\n    return new LeafletPopup(options, props.leaflet.popupContainer);\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {\n    if (toProps.position !== fromProps.position) {\n      this.leafletElement.setLatLng(toProps.position);\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    var position = this.props.position;\n    var _this$props$leaflet = this.props.leaflet,\n        map = _this$props$leaflet.map,\n        popupContainer = _this$props$leaflet.popupContainer;\n    var el = this.leafletElement;\n\n    if (map != null) {\n      map.on({\n        popupopen: this.onPopupOpen,\n        popupclose: this.onPopupClose\n      });\n    }\n\n    if (popupContainer) {\n      // Attach to container component\n      popupContainer.bindPopup(el);\n    } else {\n      // Attach to a Map\n      if (position) {\n        el.setLatLng(position);\n      }\n\n      el.openOn(map);\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var map = this.props.leaflet.map;\n\n    if (map != null) {\n      map.off({\n        popupopen: this.onPopupOpen,\n        popupclose: this.onPopupClose\n      });\n      map.removeLayer(this.leafletElement);\n    }\n\n    _DivOverlay.prototype.componentWillUnmount.call(this);\n  };\n\n  return Popup;\n}(DivOverlay);\n\n_defineProperty(Popup, \"defaultProps\", {\n  pane: 'popupPane'\n});\n\nexport default withLeaflet(Popup);","\"use strict\";\n\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createPortal } from 'react-dom';\nimport MapComponent from './MapComponent';\nimport updateClassName from './utils/updateClassName';\n\nvar DivOverlay = /*#__PURE__*/function (_MapComponent) {\n  _inheritsLoose(DivOverlay, _MapComponent);\n\n  function DivOverlay(props) {\n    var _this;\n\n    _this = _MapComponent.call(this, props) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"onClose\", function () {\n      if (_this.props.onClose) {\n        _this.props.onClose();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onOpen\", function () {\n      _this.forceUpdate(); // Re-render now that leafletElement is created\n\n\n      if (_this.props.onOpen) {\n        _this.props.onOpen();\n      }\n    });\n\n    _this.leafletElement = _this.createLeafletElement(props);\n    return _this;\n  }\n\n  var _proto = DivOverlay.prototype;\n\n  _proto.createLeafletElement = function createLeafletElement(_props) {\n    throw new Error('createLeafletElement() must be implemented');\n  };\n\n  _proto.updateLeafletElement = function updateLeafletElement(_prevProps, _props) {};\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    updateClassName(this.leafletElement._container, prevProps.className, this.props.className);\n    this.updateLeafletElement(prevProps, this.props);\n\n    if (this.leafletElement.isOpen()) {\n      this.leafletElement.update();\n      this.onRender();\n    }\n  };\n\n  _proto.onRender = function onRender() {};\n\n  _proto.render = function render() {\n    if (this.leafletElement._contentNode) {\n      return createPortal(this.props.children, this.leafletElement._contentNode);\n    }\n\n    return null;\n  };\n\n  return DivOverlay;\n}(MapComponent);\n\nexport { DivOverlay as default };"],"sourceRoot":""}