{"version":3,"sources":["webpack:///./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-router/esm/react-router.js","webpack:///./node_modules/react-router-dom/esm/react-router-dom.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/mini-create-react-context/dist/esm/index.js","webpack:///./node_modules/path-to-regexp/node_modules/isarray/index.js","webpack:///./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///./node_modules/value-equal/esm/value-equal.js","webpack:///./node_modules/history/esm/history.js"],"names":["condition","message","Error","g","this","Function","e","window","module","exports","_objectWithoutPropertiesLoose","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","createNamedContext","name","context","displayName","historyContext","Router","_React$Component","props","_this","call","state","location","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","setState","computeRootMatch","pathname","path","url","params","isExact","_proto","prototype","componentDidMount","componentWillUnmount","render","createElement","Provider","value","match","children","Component","cache$1","cacheCount$1","matchPath","options","Array","isArray","_options","_options$exact","exact","_options$strict","strict","_options$sensitive","sensitive","concat","reduce","matched","_compilePath","cacheKey","end","pathCache","result","regexp","compilePath$1","exec","values","slice","memo","index","Route","apply","arguments","Consumer","context$1","computedMatch","_this$props","component","Children","count","isEmptyChildren","addLeadingSlash","charAt","stripBasename","basename","base","substr","createURL","staticHandler","methodName","noop","StaticRouter","_len","args","_key","handlePush","navigateTo","handleReplace","handleListen","handleBlock","action","_this$props$basename","_this$props$context","addBasename","_this$props2","_this$props2$basename","_this$props2$context","_this$props2$location","rest","createHref","push","replace","go","goBack","goForward","block","Switch","element","forEach","child","isValidElement","from","cloneElement","useContext","useHistory","useLocation","useParams","BrowserRouter","resolveToLocation","to","currentLocation","normalizeToLocation","forwardRefShim","C","forwardRef","LinkAnchor","_ref","forwardedRef","innerRef","navigate","_onClick","onClick","event","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","ref","Link","_ref2","_ref2$component","href","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","className","isActiveProp","isActive","locationProp","styleProp","style","toLocation","escapedPath","classnames","filter","join","joinClassnames","isarray","pathToRegexp","parse","compile","str","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","defaultDelimiter","delimiter","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","c","charCodeAt","toString","toUpperCase","matches","flags","obj","opts","data","encode","pretty","encodeURIComponent","token","segment","TypeError","JSON","stringify","j","test","attachKeys","re","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","commonjsGlobal","globalThis","global","createEventEmitter","handlers","on","handler","off","h","get","set","newValue","changedBits","createContext","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","_Component","emitter","getChildContext","componentWillReceiveProps","nextProps","oldValue","x","y","childContextTypes","object","isRequired","_Component2","_this2","getValue","onUpdate","observedBits","_proto2","contextTypes","arr","isAbsolute","spliceOne","list","k","n","pop","undefined","hasTrailingSlash","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","valueOf","valueEqual","a","b","every","item","aValue","bValue","assign","stripLeadingSlash","toLowerCase","hasBasename","stripTrailingSlash","createPath","search","hash","createLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","callback","appendListener","fn","listener","notifyListeners","canUseDOM","document","getConfirmation","confirm","getHistoryState","createBrowserHistory","ua","globalHistory","canUseHistory","navigator","userAgent","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","Math","random","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","revertPop","initialLocation","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","unblock","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","map","entry","nextIndex","nextEntries","splice","canGo"],"mappings":"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","file":"defaultVendors~AccountDetails~AdviceLineListing~AplHomepageHero~AplLandscaperListing~AplSearchBanner~6e059058-23afa245e8f27c45bbb7.js","sourcesContent":["var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\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","export default function _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}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar historyContext = /*#__PURE__*/createNamedContext(\"Router-History\");\n\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n }, /*#__PURE__*/React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\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 _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false) ;\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\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.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && /*#__PURE__*/React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? /*#__PURE__*/React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(historyContext);\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation, createPath } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\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 _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\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 _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return /*#__PURE__*/React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n var method = replace || isDuplicateNavigation ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = typeof classNameProp === \"function\" ? classNameProp(isActive) : classNameProp;\n var style = typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = _extends({}, style, activeStyle);\n }\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\", \"false\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\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 */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\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 return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\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 */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction 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\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n"],"sourceRoot":""}