Files
supplier-dispatch-h5/node_modules/.cache/babel-loader/2da9f36b0ac5a167feaea7212ca51695f4e6e4a72f538a48f76b17535fe3904d.json
2023-08-11 10:45:20 +08:00

1 line
216 KiB
JSON

{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\n/*!\n * vue-router v3.0.7\n * (c) 2019 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[vue-router] \" + message);\n }\n}\nfunction warn(condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn(\"[vue-router] \" + message);\n }\n}\nfunction isError(err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1;\n}\nfunction extend(a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a;\n}\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render(_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode && parent.$vnode.data;\n if (vnodeData) {\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._inactive) {\n inactive = true;\n }\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children);\n }\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h();\n }\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (val && current !== vm || !val && current === vm) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;\n (data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive && vnode.componentInstance && vnode.componentInstance !== matched.instances[name]) {\n matched.instances[name] = vnode.componentInstance;\n }\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n return h(component, data, children);\n }\n};\nfunction resolveProps(route, config) {\n switch (typeof config) {\n case 'undefined':\n return;\n case 'object':\n return config;\n case 'function':\n return config(route);\n case 'boolean':\n return config ? route.params : undefined;\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"props in \\\"\" + route.path + \"\\\" is a \" + typeof config + \", \" + \"expecting an object, function or boolean.\");\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) {\n return '%' + c.charCodeAt(0).toString(16);\n};\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) {\n return encodeURIComponent(str).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\nvar decode = decodeURIComponent;\nfunction resolveQuery(query, extraQuery, _parseQuery) {\n if (extraQuery === void 0) extraQuery = {};\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery;\n}\nfunction parseQuery(query) {\n var res = {};\n query = query.trim().replace(/^(\\?|#|&)/, '');\n if (!query) {\n return res;\n }\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n return res;\n}\nfunction stringifyQuery(obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n if (val === undefined) {\n return '';\n }\n if (val === null) {\n return encode(key);\n }\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return;\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&');\n }\n return encode(key) + '=' + encode(val);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&') : null;\n return res ? \"?\" + res : '';\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\nfunction createRoute(record, location, redirectedFrom, router) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n var route = {\n name: location.name || record && record.name,\n meta: record && record.meta || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route);\n}\nfunction clone(value) {\n if (Array.isArray(value)) {\n return value.map(clone);\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res;\n } else {\n return value;\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\nfunction formatMatch(record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res;\n}\nfunction getFullPath(ref, _stringifyQuery) {\n var path = ref.path;\n var query = ref.query;\n if (query === void 0) query = {};\n var hash = ref.hash;\n if (hash === void 0) hash = '';\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash;\n}\nfunction isSameRoute(a, b) {\n if (b === START) {\n return a === b;\n } else if (!b) {\n return false;\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && a.hash === b.hash && isObjectEqual(a.query, b.query);\n } else if (a.name && b.name) {\n return a.name === b.name && a.hash === b.hash && isObjectEqual(a.query, b.query) && isObjectEqual(a.params, b.params);\n } else {\n return false;\n }\n}\nfunction isObjectEqual(a, b) {\n if (a === void 0) a = {};\n if (b === void 0) b = {};\n\n // handle null value #1566\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal);\n }\n return String(aVal) === String(bVal);\n });\n}\nfunction isIncludedRoute(current, target) {\n return current.path.replace(trailingSlashRE, '/').indexOf(target.path.replace(trailingSlashRE, '/')) === 0 && (!target.hash || current.hash === target.hash) && queryIncludes(current.query, target.query);\n}\nfunction queryIncludes(current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false;\n }\n }\n return true;\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render(h) {\n var this$1 = this;\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null ? 'router-link-exact-active' : globalExactActiveClass;\n var activeClass = this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null ? exactActiveClassFallback : this.exactActiveClass;\n var compareTarget = location.path ? createRoute(null, location, null, router) : route;\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact ? classes[exactActiveClass] : isIncludedRoute(current, compareTarget);\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n var on = {\n click: guardEvent\n };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n var data = {\n class: classes\n };\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = {\n href: href\n };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n return h(this.tag, data, this.$slots.default);\n }\n};\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) {\n return;\n }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) {\n return;\n }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) {\n return;\n }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true;\n}\nfunction findAnchor(children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child;\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child;\n }\n }\n }\n}\nvar _Vue;\nfunction install(Vue) {\n if (install.installed && _Vue === Vue) {\n return;\n }\n install.installed = true;\n _Vue = Vue;\n var isDef = function (v) {\n return v !== undefined;\n };\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = this.$parent && this.$parent._routerRoot || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed() {\n registerInstance(this);\n }\n });\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get() {\n return this._routerRoot._router;\n }\n });\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get() {\n return this._routerRoot._route;\n }\n });\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction resolvePath(relative, base, append) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative;\n }\n if (firstChar === '?' || firstChar === '#') {\n return base + relative;\n }\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n return stack.join('/');\n}\nfunction parsePath(path) {\n var hash = '';\n var query = '';\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n return {\n path: path,\n query: query,\n hash: hash\n };\n}\nfunction cleanPath(path) {\n return path.replace(/\\/\\//g, '/');\n}\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = 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+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].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 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 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 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 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 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));\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) {\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 + ')$');\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 for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n var value = data[token.name];\n var segment;\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined');\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 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 for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\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 path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n continue;\n }\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"');\n }\n path += token.prefix + segment;\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.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 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 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 for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\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 options = options || {};\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 if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n keys.push(token);\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\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 route += capture;\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 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 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 options = options || {};\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */keys);\n }\n if (isarray(path)) {\n return arrayToRegexp( /** @type {!Array} */path, /** @type {!Array} */keys, options);\n }\n return stringToRegexp( /** @type {string} */path, /** @type {!Array} */keys, options);\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\nfunction fillParams(path, params, routeMsg) {\n params = params || {};\n try {\n var filler = regexpCompileCache[path] || (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n if (params.pathMatch) {\n params[0] = params.pathMatch;\n }\n return filler(params, {\n pretty: true\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"missing param for \" + routeMsg + \": \" + e.message);\n }\n return '';\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction createRouteMap(routes, oldPathList, oldPathMap, oldNameMap) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n };\n}\nfunction addRouteRecord(pathList, pathMap, nameMap, route, parent, matchAs) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(typeof route.component !== 'string', \"route config \\\"component\\\" for path: \" + String(path || name) + \" cannot be a \" + \"string id. Use an actual component instead.\");\n }\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || {\n default: route.component\n },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null ? {} : route.components ? route.props : {\n default: route.props\n }\n };\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) {\n return /^\\/?$/.test(child.path);\n })) {\n warn(false, \"Named Route '\" + route.name + \"' has a default child route. \" + \"When navigating to this named route (:to=\\\"{name: '\" + route.name + \"'\\\"), \" + \"the default child route will not be rendered. Remove the name from \" + \"this route and use the name of the default child route for named \" + \"links instead.\");\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs ? cleanPath(matchAs + \"/\" + child.path) : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(pathList, pathMap, nameMap, aliasRoute, parent, record.path || '/' // matchAs\n );\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(false, \"Duplicate named routes definition: \" + \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + record.path + \"\\\" }\");\n }\n }\n}\nfunction compileRouteRegex(path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], \"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\");\n keys[key.name] = true;\n });\n }\n return regex;\n}\nfunction normalizePath(path, parent, strict) {\n if (!strict) {\n path = path.replace(/\\/$/, '');\n }\n if (path[0] === '/') {\n return path;\n }\n if (parent == null) {\n return path;\n }\n return cleanPath(parent.path + \"/\" + path);\n}\n\n/* */\n\nfunction normalizeLocation(raw, current, append, router) {\n var next = typeof raw === 'string' ? {\n path: raw\n } : raw;\n // named target\n if (next._normalized) {\n return next;\n } else if (next.name) {\n return extend({}, raw);\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, \"path \" + current.path);\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next;\n }\n var parsedPath = parsePath(next.path || '');\n var basePath = current && current.path || '/';\n var path = parsedPath.path ? resolvePath(parsedPath.path, basePath, append || next.append) : basePath;\n var query = resolveQuery(parsedPath.query, next.query, router && router.options.parseQuery);\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n };\n}\n\n/* */\n\nfunction createMatcher(routes, router) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n function addRoutes(routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n function match(raw, currentRoute, redirectedFrom) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, \"Route with name '\" + name + \"' does not exist\");\n }\n if (!record) {\n return _createRoute(null, location);\n }\n var paramNames = record.regex.keys.filter(function (key) {\n return !key.optional;\n }).map(function (key) {\n return key.name;\n });\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n location.path = fillParams(record.path, location.params, \"named route \\\"\" + name + \"\\\"\");\n return _createRoute(record, location, redirectedFrom);\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom);\n }\n }\n }\n // no match\n return _createRoute(null, location);\n }\n function redirect(record, location) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function' ? originalRedirect(createRoute(record, location, null, router)) : originalRedirect;\n if (typeof redirect === 'string') {\n redirect = {\n path: redirect\n };\n }\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"invalid redirect option: \" + JSON.stringify(redirect));\n }\n return _createRoute(null, location);\n }\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, \"redirect failed: named route \\\"\" + name + \"\\\" not found.\");\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location);\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, \"redirect route with path \\\"\" + rawPath + \"\\\"\");\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"invalid redirect option: \" + JSON.stringify(redirect));\n }\n return _createRoute(null, location);\n }\n }\n function alias(record, location, matchAs) {\n var aliasedPath = fillParams(matchAs, location.params, \"aliased route with path \\\"\" + matchAs + \"\\\"\");\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location);\n }\n return _createRoute(null, location);\n }\n function _createRoute(record, location, redirectedFrom) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location);\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs);\n }\n return createRoute(record, location, redirectedFrom, router);\n }\n return {\n match: match,\n addRoutes: addRoutes\n };\n}\nfunction matchRoute(regex, path, params) {\n var m = path.match(regex);\n if (!m) {\n return false;\n } else if (!params) {\n return true;\n }\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n return true;\n}\nfunction resolveRecordPath(path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true);\n}\n\n/* */\n\nvar positionStore = Object.create(null);\nfunction setupScroll() {\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n window.history.replaceState({\n key: getStateKey()\n }, '', absolutePath);\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\nfunction handleScroll(router, to, from, isPop) {\n if (!router.app) {\n return;\n }\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(router, to, from, isPop ? position : null);\n if (!shouldScroll) {\n return;\n }\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition(shouldScroll, position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\nfunction saveScrollPosition() {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\nfunction getScrollPosition() {\n var key = getStateKey();\n if (key) {\n return positionStore[key];\n }\n}\nfunction getElementPosition(el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n };\n}\nfunction isValidPosition(obj) {\n return isNumber(obj.x) || isNumber(obj.y);\n}\nfunction normalizePosition(obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n };\n}\nfunction normalizeOffset(obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n };\n}\nfunction isNumber(v) {\n return typeof v === 'number';\n}\nfunction scrollToPosition(shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && function () {\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) {\n return false;\n }\n return window.history && 'pushState' in window.history;\n}();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now ? window.performance : Date;\nvar _key = genKey();\nfunction genKey() {\n return Time.now().toFixed(3);\n}\nfunction getStateKey() {\n return _key;\n}\nfunction setStateKey(key) {\n _key = key;\n}\nfunction pushState(url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({\n key: _key\n }, '', url);\n } else {\n _key = genKey();\n history.pushState({\n key: _key\n }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\nfunction replaceState(url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue(queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents(matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function' ? resolvedDef : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason) ? reason : new Error(msg);\n next(error);\n }\n });\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n if (!hasAsync) {\n next();\n }\n };\n}\nfunction flatMapComponents(matched, fn) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return fn(m.components[key], m.instances[key], m, key);\n });\n }));\n}\nfunction flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nvar hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nfunction isESModule(obj) {\n return obj.__esModule || hasSymbol && obj[Symbol.toStringTag] === 'Module';\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once(fn) {\n var called = false;\n return function () {\n var args = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n if (called) {\n return;\n }\n called = true;\n return fn.apply(this, args);\n };\n}\n\n/* */\n\nvar History = function History(router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\nHistory.prototype.listen = function listen(cb) {\n this.cb = cb;\n};\nHistory.prototype.onReady = function onReady(cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\nHistory.prototype.onError = function onError(errorCb) {\n this.errorCbs.push(errorCb);\n};\nHistory.prototype.transitionTo = function transitionTo(location, onComplete, onAbort) {\n var this$1 = this;\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n });\n};\nHistory.prototype.confirmTransition = function confirmTransition(route, onComplete, onAbort) {\n var this$1 = this;\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length) {\n this.ensureURL();\n return abort();\n }\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) {\n return m.beforeEnter;\n }),\n // async components\n resolveAsyncComponents(activated));\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort();\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (typeof to === 'string' || typeof to === 'object' && (typeof to.path === 'string' || typeof to.name === 'string')) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () {\n return this$1.current === route;\n };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort();\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) {\n cb();\n });\n });\n }\n });\n });\n};\nHistory.prototype.updateRoute = function updateRoute(route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\nfunction normalizeBase(base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = baseEl && baseEl.getAttribute('href') || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '');\n}\nfunction resolveQueue(current, next) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break;\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n };\n}\nfunction extractGuards(records, name, bind, reverse) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard) ? guard.map(function (guard) {\n return bind(guard, instance, match, key);\n }) : bind(guard, instance, match, key);\n }\n });\n return flatten(reverse ? guards.reverse() : guards);\n}\nfunction extractGuard(def, key) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key];\n}\nfunction extractLeaveGuards(deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true);\n}\nfunction extractUpdateHooks(updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard);\n}\nfunction bindGuard(guard, instance) {\n if (instance) {\n return function boundRouteGuard() {\n return guard.apply(instance, arguments);\n };\n }\n}\nfunction extractEnterGuards(activated, cbs, isValid) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid);\n });\n}\nfunction bindEnterGuard(guard, match, key, cbs, isValid) {\n return function routeEnterGuard(to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n });\n };\n}\nfunction poll(cb,\n// somehow flow cannot infer this is a function\ninstances, key, isValid) {\n if (instances[key] && !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/function (History$$1) {\n function HTML5History(router, base) {\n var this$1 = this;\n History$$1.call(this, router, base);\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n if (supportsScroll) {\n setupScroll();\n }\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return;\n }\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n if (History$$1) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create(History$$1 && History$$1.prototype);\n HTML5History.prototype.constructor = HTML5History;\n HTML5History.prototype.go = function go(n) {\n window.history.go(n);\n };\n HTML5History.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HTML5History.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HTML5History.prototype.ensureURL = function ensureURL(push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation() {\n return getLocation(this.base);\n };\n return HTML5History;\n}(History);\nfunction getLocation(base) {\n var path = decodeURI(window.location.pathname);\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash;\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/function (History$$1) {\n function HashHistory(router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return;\n }\n ensureSlash();\n }\n if (History$$1) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create(History$$1 && History$$1.prototype);\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners() {\n var this$1 = this;\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n if (supportsScroll) {\n setupScroll();\n }\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return;\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n HashHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HashHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HashHistory.prototype.go = function go(n) {\n window.history.go(n);\n };\n HashHistory.prototype.ensureURL = function ensureURL(push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation() {\n return getHash();\n };\n return HashHistory;\n}(History);\nfunction checkFallback(base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true;\n }\n}\nfunction ensureSlash() {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true;\n }\n replaceHash('/' + path);\n return false;\n}\nfunction getHash() {\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 index = href.indexOf('#');\n // empty path\n if (index < 0) {\n return '';\n }\n href = href.slice(index + 1);\n // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) {\n href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);\n } else {\n href = decodeURI(href);\n }\n } else {\n if (searchIndex > -1) {\n href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);\n }\n }\n return href;\n}\nfunction getUrl(path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return base + \"#\" + path;\n}\nfunction pushHash(path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\nfunction replaceHash(path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/function (History$$1) {\n function AbstractHistory(router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n if (History$$1) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create(History$$1 && History$$1.prototype);\n AbstractHistory.prototype.constructor = AbstractHistory;\n AbstractHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n AbstractHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n AbstractHistory.prototype.go = function go(n) {\n var this$1 = this;\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return;\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation() {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/';\n };\n AbstractHistory.prototype.ensureURL = function ensureURL() {\n // noop\n };\n return AbstractHistory;\n}(History);\n\n/* */\n\nvar VueRouter = function VueRouter(options) {\n if (options === void 0) options = {};\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break;\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break;\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break;\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, \"invalid mode: \" + mode);\n }\n }\n};\nvar prototypeAccessors = {\n currentRoute: {\n configurable: true\n }\n};\nVueRouter.prototype.match = function match(raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom);\n};\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current;\n};\nVueRouter.prototype.init = function init(app /* Vue component instance */) {\n var this$1 = this;\n process.env.NODE_ENV !== 'production' && assert(install.installed, \"not installed. Make sure to call `Vue.use(VueRouter)` \" + \"before creating root instance.\");\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) {\n this$1.apps.splice(index, 1);\n }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) {\n this$1.app = this$1.apps[0] || null;\n }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return;\n }\n this.app = app;\n var history = this.history;\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(history.getCurrentLocation(), setupHashListener, setupHashListener);\n }\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\nVueRouter.prototype.beforeEach = function beforeEach(fn) {\n return registerHook(this.beforeHooks, fn);\n};\nVueRouter.prototype.beforeResolve = function beforeResolve(fn) {\n return registerHook(this.resolveHooks, fn);\n};\nVueRouter.prototype.afterEach = function afterEach(fn) {\n return registerHook(this.afterHooks, fn);\n};\nVueRouter.prototype.onReady = function onReady(cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\nVueRouter.prototype.onError = function onError(errorCb) {\n this.history.onError(errorCb);\n};\nVueRouter.prototype.push = function push(location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\nVueRouter.prototype.replace = function replace(location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\nVueRouter.prototype.go = function go(n) {\n this.history.go(n);\n};\nVueRouter.prototype.back = function back() {\n this.go(-1);\n};\nVueRouter.prototype.forward = function forward() {\n this.go(1);\n};\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents(to) {\n var route = to ? to.matched ? to : this.resolve(to).route : this.currentRoute;\n if (!route) {\n return [];\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key];\n });\n }));\n};\nVueRouter.prototype.resolve = function resolve(to, current, append) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n };\n};\nVueRouter.prototype.addRoutes = function addRoutes(routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\nObject.defineProperties(VueRouter.prototype, prototypeAccessors);\nfunction registerHook(list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) {\n list.splice(i, 1);\n }\n };\n}\nfunction createHref(base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path;\n}\nVueRouter.install = install;\nVueRouter.version = '3.0.7';\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\nexport default VueRouter;","map":{"version":3,"names":["assert","condition","message","Error","warn","process","env","NODE_ENV","console","isError","err","Object","prototype","toString","call","indexOf","extend","a","b","key","View","name","functional","props","type","String","default","render","_","ref","children","parent","data","routerView","h","$createElement","route","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_inactive","$parent","routerViewDepth","matched","component","components","registerRouteInstance","vm","val","current","instances","hook","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","config","params","undefined","path","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","e","res","trim","split","forEach","param","parts","shift","length","join","Array","isArray","push","stringifyQuery","obj","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","stringifyQuery$$1","options","clone","meta","hash","fullPath","getFullPath","formatMatch","freeze","value","START","unshift","_stringifyQuery","stringify","isSameRoute","isObjectEqual","aKeys","bKeys","every","aVal","bVal","isIncludedRoute","target","queryIncludes","toTypes","eventTypes","Link","to","required","tag","exact","Boolean","append","activeClass","exactActiveClass","event","this$1","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","handler","guardEvent","on","click","class","findAnchor","$slots","isStatic","aData","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","test","preventDefault","child","i","_Vue","install","Vue","installed","isDef","v","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","resolvePath","relative","base","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","slice","queryIndex","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","encodeAsterisk","matches","opts","pretty","token","TypeError","JSON","j","attachKeys","re","flags","sensitive","regexpToRegexp","groups","source","match","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","some","childMatchAs","alias","aliases","aliasRoute","normalizeLocation","raw","_normalized","rawPath","parsedPath","basePath","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","targetRecord","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","positionStore","setupScroll","protocolAndPath","protocol","host","absolutePath","replaceState","getStateKey","addEventListener","saveScrollPosition","state","setStateKey","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","pageXOffset","y","pageYOffset","getElementPosition","el","docEl","document","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","isObject","selector","querySelector","scrollTo","supportsPushState","ua","navigator","userAgent","Time","performance","now","Date","_key","genKey","toFixed","pushState","url","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","error","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","concat","apply","hasSymbol","Symbol","toStringTag","__esModule","called","args","arguments","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","abort","resolveQueue","updated","deactivated","activated","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","postEnterCbs","isValid","enterGuards","extractEnterGuards","resolveHooks","prev","afterHooks","baseEl","max","Math","extractGuards","records","bind","reverse","guards","instance","guard","extractGuard","bindGuard","boundRouteGuard","cbs","bindEnterGuard","routeEnterGuard","poll","_isBeingDestroyed","setTimeout","HTML5History","History$$1","expectScroll","supportsScroll","initLocation","getLocation","__proto__","constructor","go","n","fromRoute","getCurrentLocation","decodeURI","pathname","search","HashHistory","fallback","checkFallback","ensureSlash","setupListeners","getHash","replaceHash","pushHash","searchIndex","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","$once","setupHashListener","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","list","version","use"],"sources":["E:/work/sino/sino-h5/node_modules/vue-router/dist/vue-router.esm.js"],"sourcesContent":["/*!\n * vue-router v3.0.7\n * (c) 2019 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode && parent.$vnode.data;\n if (vnodeData) {\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._inactive) {\n inactive = true;\n }\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n\n return h(component, data, children)\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n}\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = 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))\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) {\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 + ')$');\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.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}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n if (params.pathMatch) { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n return extend({}, raw)\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n window.history.replaceState({ key: getStateKey() }, '', absolutePath);\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(router, to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\n}\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n next(cb);\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (\n instances[key] &&\n !instances[key]._isBeingDestroyed // do not reuse being destroyed instance\n ) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = decodeURI(window.location.pathname);\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(\n cleanPath(base + '/#' + location)\n );\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\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 index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n // decode the hash but not the search or hash\n // as search(query) is already decoded\n // https://github.com/vuejs/vue-router/issues/2708\n var searchIndex = href.indexOf('?');\n if (searchIndex < 0) {\n var hashIndex = href.indexOf('#');\n if (hashIndex > -1) { href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex); }\n else { href = decodeURI(href); }\n } else {\n if (searchIndex > -1) { href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex); }\n }\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(\n to,\n current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.0.7';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}