{"version":3,"sources":["webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/vue-resource/dist/vue-resource.esm.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js"],"names":["normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","exports","RESOLVED","REJECTED","PENDING","Promise$1","executor","state","value","undefined","deferred","promise","x","resolve","r","reject","e","all","iterable","count","result","resolver","i","length","then","race","p","prototype","PromiseObj","Promise","bind","TypeError","called","notify","reason","nextTick","shift","onResolved","onRejected","push","catch","window","p$1","fulfilled","rejected","finally","callback","ntick","ref","hasOwnProperty","ref$1","slice","debug","inBrowser","Util","config","silent","warn","msg","console","error","cb","ctx","trim","str","replace","trimEnd","chars","RegExp","toLower","toLowerCase","toUpper","toUpperCase","isArray","Array","isString","val","isFunction","isObject","obj","isPlainObject","Object","getPrototypeOf","isBlob","Blob","isFormData","FormData","when","arguments","fn","opts","merge","$vm","each","iterator","key","assign","_assign","target","args","forEach","source","_merge","defaults","deep","root","options$$1","next","url","test","query","urlParams","keys","Url","params","indexOf","expand","variables","tmpl","parse","expanded","apply","vars","template","operators","_","expression","literal","operator","values","charAt","substr","split","variable","tmp","exec","getValues","separator","join","encodeReserved","modifier","isDefined","toString","substring","parseInt","encodeValue","isKeyOperator","filter","k","encodeURIComponent","map","part","encodeURI","transform","self","transforms","handler","factory","vm","serialize","scope","hash","array","plain","name","xdrClient","request","xdr","XDomainRequest","type","status","respondWith","responseText","abort","open","method","getUrl","timeout","onload","onabort","onerror","ontimeout","onprogress","send","getBody","escape","el","document","createElement","documentMode","href","protocol","port","host","hostname","pathname","search","SUPPORTS_CORS","XMLHttpRequest","cors","orgUrl","location","reqUrl","crossOrigin","emulateHTTP","client","form","body","headers","delete","emulateJSON","set","json","get","JSON","stringify","response","bodyText","text","isJson","start","match","end","jsonpClient","script","jsonp","jsonpCallback","Math","random","removeChild","setTimeout","src","async","appendChild","before","header","Http","common","custom","has","xhrClient","xhr","event","statusText","getAllResponseHeaders","row","append","responseType","withCredentials","credentials","progress","addEventListener","downloadProgress","upload","uploadProgress","setRequestHeader","nodeClient","resp","statusCode","statusMessage","error$$1","Client","reqHandlers","sendRequest","resHandlers","pop","unshift","use","Headers","this$1","getName","reduce","prev","curr","normalizeName","list","getAll","deleteAll","thisArg","Response","ok","bodyBlob","isBlobText","blobText","reader","FileReader","readAsText","blob","defineProperty","Request","COMMON_HEADERS","JSON_CONTENT_TYPE","interceptors","interceptor","Error","Resource","actions","resource","action","$http","plugin","Vue","installed","http","defineProperties","$url","$resource","$promise","put","post","patch","method$$1","save","update","remove","condition","message","extend","a","b","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","commaRE","encode","decode","decodeURIComponent","err","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","castQueryParamValue","String","res","param","parts","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","router","clone","route","meta","path","fullPath","getFullPath","matched","formatMatch","freeze","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","sort","bKeys","every","aVal","bKey","bVal","isIncludedRoute","current","queryIncludes","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","props","default","children","data","routerView","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","resolvePath","relative","base","firstChar","stack","segments","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","index","defaultDelimiter","delimiter","m","escaped","offset","prefix","capture","group","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","matches","flags","pretty","token","j","attachKeys","re","sensitive","regexpToRegexp","groups","arrayToRegexp","regexp","stringToRegexp","strict","endsWithDelimiter","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","basePath","_Vue","toTypes","eventTypes","noop","Link","to","required","tag","exact","Boolean","activeClass","exactActiveClass","ariaCurrentValue","$router","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","install","isDef","v","registerInstance","callVal","_parentVnode","mixin","_router","util","defineReactive","history","destroyed","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","childMatchAs","alias","aliases","aliasRoute","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","replaceState","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","y","pageYOffset","getElementPosition","docEl","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","selector","getElementById","querySelector","style","scrollTo","supportsPushState","ua","navigator","userAgent","pushState","runQueue","queue","step","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","comp","flatten","hasSymbol","Symbol","toStringTag","__esModule","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","baseEl","resolveQueue","max","updated","activated","deactivated","extractGuards","records","reverse","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","beforeHooks","enterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","n","fromRoute","getCurrentLocation","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","registerHook","createHref","$once","handleInitialScroll","routeOrError","beforeEach","beforeResolve","afterEach","back","forward","getMatchedComponents","normalizedTo","version"],"mappings":"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","file":"js/chunk-vendors~0605657e.1f4684bd.js","sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * vue-resource v1.5.1\n * https://github.com/pagekit/vue-resource\n * Released under the MIT License.\n */\n\n/**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\nvar RESOLVED = 0;\nvar REJECTED = 1;\nvar PENDING = 2;\n\nfunction Promise$1(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(function (x) {\n promise.resolve(x);\n }, function (r) {\n promise.reject(r);\n });\n } catch (e) {\n promise.reject(e);\n }\n}\n\nPromise$1.reject = function (r) {\n return new Promise$1(function (resolve, reject) {\n reject(r);\n });\n};\n\nPromise$1.resolve = function (x) {\n return new Promise$1(function (resolve, reject) {\n resolve(x);\n });\n};\n\nPromise$1.all = function all(iterable) {\n return new Promise$1(function (resolve, reject) {\n var count = 0, result = [];\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n Promise$1.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n};\n\nPromise$1.race = function race(iterable) {\n return new Promise$1(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n Promise$1.resolve(iterable[i]).then(resolve, reject);\n }\n });\n};\n\nvar p = Promise$1.prototype;\n\np.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x['then'];\n\n if (x !== null && typeof x === 'object' && typeof then === 'function') {\n then.call(x, function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n\n }, function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n });\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n};\n\np.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n};\n\np.notify = function notify() {\n var promise = this;\n\n nextTick(function () {\n if (promise.state !== PENDING) {\n while (promise.deferred.length) {\n var deferred = promise.deferred.shift(),\n onResolved = deferred[0],\n onRejected = deferred[1],\n resolve = deferred[2],\n reject = deferred[3];\n\n try {\n if (promise.state === RESOLVED) {\n if (typeof onResolved === 'function') {\n resolve(onResolved.call(undefined, promise.value));\n } else {\n resolve(promise.value);\n }\n } else if (promise.state === REJECTED) {\n if (typeof onRejected === 'function') {\n resolve(onRejected.call(undefined, promise.value));\n } else {\n reject(promise.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n};\n\np.then = function then(onResolved, onRejected) {\n var promise = this;\n\n return new Promise$1(function (resolve, reject) {\n promise.deferred.push([onResolved, onRejected, resolve, reject]);\n promise.notify();\n });\n};\n\np.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n};\n\n/**\n * Promise adapter.\n */\n\nif (typeof Promise === 'undefined') {\n window.Promise = Promise$1;\n}\n\nfunction PromiseObj(executor, context) {\n\n if (executor instanceof Promise) {\n this.promise = executor;\n } else {\n this.promise = new Promise(executor.bind(context));\n }\n\n this.context = context;\n}\n\nPromiseObj.all = function (iterable, context) {\n return new PromiseObj(Promise.all(iterable), context);\n};\n\nPromiseObj.resolve = function (value, context) {\n return new PromiseObj(Promise.resolve(value), context);\n};\n\nPromiseObj.reject = function (reason, context) {\n return new PromiseObj(Promise.reject(reason), context);\n};\n\nPromiseObj.race = function (iterable, context) {\n return new PromiseObj(Promise.race(iterable), context);\n};\n\nvar p$1 = PromiseObj.prototype;\n\np$1.bind = function (context) {\n this.context = context;\n return this;\n};\n\np$1.then = function (fulfilled, rejected) {\n\n if (fulfilled && fulfilled.bind && this.context) {\n fulfilled = fulfilled.bind(this.context);\n }\n\n if (rejected && rejected.bind && this.context) {\n rejected = rejected.bind(this.context);\n }\n\n return new PromiseObj(this.promise.then(fulfilled, rejected), this.context);\n};\n\np$1.catch = function (rejected) {\n\n if (rejected && rejected.bind && this.context) {\n rejected = rejected.bind(this.context);\n }\n\n return new PromiseObj(this.promise.catch(rejected), this.context);\n};\n\np$1.finally = function (callback) {\n\n return this.then(function (value) {\n callback.call(this);\n return value;\n }, function (reason) {\n callback.call(this);\n return Promise.reject(reason);\n }\n );\n};\n\n/**\n * Utility functions.\n */\n\nvar ref = {};\nvar hasOwnProperty = ref.hasOwnProperty;\nvar ref$1 = [];\nvar slice = ref$1.slice;\nvar debug = false, ntick;\n\nvar inBrowser = typeof window !== 'undefined';\n\nfunction Util (ref) {\n var config = ref.config;\n var nextTick = ref.nextTick;\n\n ntick = nextTick;\n debug = config.debug || !config.silent;\n}\n\nfunction warn(msg) {\n if (typeof console !== 'undefined' && debug) {\n console.warn('[VueResource warn]: ' + msg);\n }\n}\n\nfunction error(msg) {\n if (typeof console !== 'undefined') {\n console.error(msg);\n }\n}\n\nfunction nextTick(cb, ctx) {\n return ntick(cb, ctx);\n}\n\nfunction trim(str) {\n return str ? str.replace(/^\\s*|\\s*$/g, '') : '';\n}\n\nfunction trimEnd(str, chars) {\n\n if (str && chars === undefined) {\n return str.replace(/\\s+$/, '');\n }\n\n if (!str || !chars) {\n return str;\n }\n\n return str.replace(new RegExp((\"[\" + chars + \"]+$\")), '');\n}\n\nfunction toLower(str) {\n return str ? str.toLowerCase() : '';\n}\n\nfunction toUpper(str) {\n return str ? str.toUpperCase() : '';\n}\n\nvar isArray = Array.isArray;\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\nfunction isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n}\n\nfunction isBlob(obj) {\n return typeof Blob !== 'undefined' && obj instanceof Blob;\n}\n\nfunction isFormData(obj) {\n return typeof FormData !== 'undefined' && obj instanceof FormData;\n}\n\nfunction when(value, fulfilled, rejected) {\n\n var promise = PromiseObj.resolve(value);\n\n if (arguments.length < 2) {\n return promise;\n }\n\n return promise.then(fulfilled, rejected);\n}\n\nfunction options(fn, obj, opts) {\n\n opts = opts || {};\n\n if (isFunction(opts)) {\n opts = opts.call(obj);\n }\n\n return merge(fn.bind({$vm: obj, $options: opts}), fn, {$options: opts});\n}\n\nfunction each(obj, iterator) {\n\n var i, key;\n\n if (isArray(obj)) {\n for (i = 0; i < obj.length; i++) {\n iterator.call(obj[i], obj[i], i);\n }\n } else if (isObject(obj)) {\n for (key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n iterator.call(obj[key], obj[key], key);\n }\n }\n }\n\n return obj;\n}\n\nvar assign = Object.assign || _assign;\n\nfunction merge(target) {\n\n var args = slice.call(arguments, 1);\n\n args.forEach(function (source) {\n _merge(target, source, true);\n });\n\n return target;\n}\n\nfunction defaults(target) {\n\n var args = slice.call(arguments, 1);\n\n args.forEach(function (source) {\n\n for (var key in source) {\n if (target[key] === undefined) {\n target[key] = source[key];\n }\n }\n\n });\n\n return target;\n}\n\nfunction _assign(target) {\n\n var args = slice.call(arguments, 1);\n\n args.forEach(function (source) {\n _merge(target, source);\n });\n\n return target;\n}\n\nfunction _merge(target, source, deep) {\n for (var key in source) {\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n _merge(target[key], source[key], deep);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n}\n\n/**\n * Root Prefix Transform.\n */\n\nfunction root (options$$1, next) {\n\n var url = next(options$$1);\n\n if (isString(options$$1.root) && !/^(https?:)?\\//.test(url)) {\n url = trimEnd(options$$1.root, '/') + '/' + url;\n }\n\n return url;\n}\n\n/**\n * Query Parameter Transform.\n */\n\nfunction query (options$$1, next) {\n\n var urlParams = Object.keys(Url.options.params), query = {}, url = next(options$$1);\n\n each(options$$1.params, function (value, key) {\n if (urlParams.indexOf(key) === -1) {\n query[key] = value;\n }\n });\n\n query = Url.params(query);\n\n if (query) {\n url += (url.indexOf('?') == -1 ? '?' : '&') + query;\n }\n\n return url;\n}\n\n/**\n * URL Template v2.0.6 (https://github.com/bramstein/url-template)\n */\n\nfunction expand(url, params, variables) {\n\n var tmpl = parse(url), expanded = tmpl.expand(params);\n\n if (variables) {\n variables.push.apply(variables, tmpl.vars);\n }\n\n return expanded;\n}\n\nfunction parse(template) {\n\n var operators = ['+', '#', '.', '/', ';', '?', '&'], variables = [];\n\n return {\n vars: variables,\n expand: function expand(context) {\n return template.replace(/\\{([^{}]+)\\}|([^{}]+)/g, function (_, expression, literal) {\n if (expression) {\n\n var operator = null, values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n variables.push(tmp[1]);\n });\n\n if (operator && operator !== '+') {\n\n var separator = ',';\n\n if (operator === '?') {\n separator = '&';\n } else if (operator !== '#') {\n separator = operator;\n }\n\n return (values.length !== 0 ? operator : '') + values.join(separator);\n } else {\n return values.join(',');\n }\n\n } else {\n return encodeReserved(literal);\n }\n });\n }\n };\n}\n\nfunction getValues(context, operator, key, modifier) {\n\n var value = context[key], result = [];\n\n if (isDefined(value) && value !== '') {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n value = value.toString();\n\n if (modifier && modifier !== '*') {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n } else {\n if (modifier === '*') {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n var tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeURIComponent(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeURIComponent(key) + '=' + tmp.join(','));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(','));\n }\n }\n }\n } else {\n if (operator === ';') {\n result.push(encodeURIComponent(key));\n } else if (value === '' && (operator === '&' || operator === '?')) {\n result.push(encodeURIComponent(key) + '=');\n } else if (value === '') {\n result.push('');\n }\n }\n\n return result;\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === ';' || operator === '&' || operator === '?';\n}\n\nfunction encodeValue(operator, value, key) {\n\n value = (operator === '+' || operator === '#') ? encodeReserved(value) : encodeURIComponent(value);\n\n if (key) {\n return encodeURIComponent(key) + '=' + value;\n } else {\n return value;\n }\n}\n\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part);\n }\n return part;\n }).join('');\n}\n\n/**\n * URL Template (RFC 6570) Transform.\n */\n\nfunction template (options) {\n\n var variables = [], url = expand(options.url, options.params, variables);\n\n variables.forEach(function (key) {\n delete options.params[key];\n });\n\n return url;\n}\n\n/**\n * Service for URL templating.\n */\n\nfunction Url(url, params) {\n\n var self = this || {}, options$$1 = url, transform;\n\n if (isString(url)) {\n options$$1 = {url: url, params: params};\n }\n\n options$$1 = merge({}, Url.options, self.$options, options$$1);\n\n Url.transforms.forEach(function (handler) {\n\n if (isString(handler)) {\n handler = Url.transform[handler];\n }\n\n if (isFunction(handler)) {\n transform = factory(handler, transform, self.$vm);\n }\n\n });\n\n return transform(options$$1);\n}\n\n/**\n * Url options.\n */\n\nUrl.options = {\n url: '',\n root: null,\n params: {}\n};\n\n/**\n * Url transforms.\n */\n\nUrl.transform = {template: template, query: query, root: root};\nUrl.transforms = ['template', 'query', 'root'];\n\n/**\n * Encodes a Url parameter string.\n *\n * @param {Object} obj\n */\n\nUrl.params = function (obj) {\n\n var params = [], escape = encodeURIComponent;\n\n params.add = function (key, value) {\n\n if (isFunction(value)) {\n value = value();\n }\n\n if (value === null) {\n value = '';\n }\n\n this.push(escape(key) + '=' + escape(value));\n };\n\n serialize(params, obj);\n\n return params.join('&').replace(/%20/g, '+');\n};\n\n/**\n * Parse a URL and return its components.\n *\n * @param {String} url\n */\n\nUrl.parse = function (url) {\n\n var el = document.createElement('a');\n\n if (document.documentMode) {\n el.href = url;\n url = el.href;\n }\n\n el.href = url;\n\n return {\n href: el.href,\n protocol: el.protocol ? el.protocol.replace(/:$/, '') : '',\n port: el.port,\n host: el.host,\n hostname: el.hostname,\n pathname: el.pathname.charAt(0) === '/' ? el.pathname : '/' + el.pathname,\n search: el.search ? el.search.replace(/^\\?/, '') : '',\n hash: el.hash ? el.hash.replace(/^#/, '') : ''\n };\n};\n\nfunction factory(handler, next, vm) {\n return function (options$$1) {\n return handler.call(vm, options$$1, next);\n };\n}\n\nfunction serialize(params, obj, scope) {\n\n var array = isArray(obj), plain = isPlainObject(obj), hash;\n\n each(obj, function (value, key) {\n\n hash = isObject(value) || isArray(value);\n\n if (scope) {\n key = scope + '[' + (plain || hash ? key : '') + ']';\n }\n\n if (!scope && array) {\n params.add(value.name, value.value);\n } else if (hash) {\n serialize(params, value, key);\n } else {\n params.add(key, value);\n }\n });\n}\n\n/**\n * XDomain client (Internet Explorer).\n */\n\nfunction xdrClient (request) {\n return new PromiseObj(function (resolve) {\n\n var xdr = new XDomainRequest(), handler = function (ref) {\n var type = ref.type;\n\n\n var status = 0;\n\n if (type === 'load') {\n status = 200;\n } else if (type === 'error') {\n status = 500;\n }\n\n resolve(request.respondWith(xdr.responseText, {status: status}));\n };\n\n request.abort = function () { return xdr.abort(); };\n\n xdr.open(request.method, request.getUrl());\n\n if (request.timeout) {\n xdr.timeout = request.timeout;\n }\n\n xdr.onload = handler;\n xdr.onabort = handler;\n xdr.onerror = handler;\n xdr.ontimeout = handler;\n xdr.onprogress = function () {};\n xdr.send(request.getBody());\n });\n}\n\n/**\n * CORS Interceptor.\n */\n\nvar SUPPORTS_CORS = inBrowser && 'withCredentials' in new XMLHttpRequest();\n\nfunction cors (request) {\n\n if (inBrowser) {\n\n var orgUrl = Url.parse(location.href);\n var reqUrl = Url.parse(request.getUrl());\n\n if (reqUrl.protocol !== orgUrl.protocol || reqUrl.host !== orgUrl.host) {\n\n request.crossOrigin = true;\n request.emulateHTTP = false;\n\n if (!SUPPORTS_CORS) {\n request.client = xdrClient;\n }\n }\n }\n\n}\n\n/**\n * Form data Interceptor.\n */\n\nfunction form (request) {\n\n if (isFormData(request.body)) {\n request.headers.delete('Content-Type');\n } else if (isObject(request.body) && request.emulateJSON) {\n request.body = Url.params(request.body);\n request.headers.set('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n}\n\n/**\n * JSON Interceptor.\n */\n\nfunction json (request) {\n\n var type = request.headers.get('Content-Type') || '';\n\n if (isObject(request.body) && type.indexOf('application/json') === 0) {\n request.body = JSON.stringify(request.body);\n }\n\n return function (response) {\n\n return response.bodyText ? when(response.text(), function (text) {\n\n var type = response.headers.get('Content-Type') || '';\n\n if (type.indexOf('application/json') === 0 || isJson(text)) {\n\n try {\n response.body = JSON.parse(text);\n } catch (e) {\n response.body = null;\n }\n\n } else {\n response.body = text;\n }\n\n return response;\n\n }) : response;\n\n };\n}\n\nfunction isJson(str) {\n\n var start = str.match(/^\\s*(\\[|\\{)/);\n var end = {'[': /]\\s*$/, '{': /}\\s*$/};\n\n return start && end[start[1]].test(str);\n}\n\n/**\n * JSONP client (Browser).\n */\n\nfunction jsonpClient (request) {\n return new PromiseObj(function (resolve) {\n\n var name = request.jsonp || 'callback', callback = request.jsonpCallback || '_jsonp' + Math.random().toString(36).substr(2), body = null, handler, script;\n\n handler = function (ref) {\n var type = ref.type;\n\n\n var status = 0;\n\n if (type === 'load' && body !== null) {\n status = 200;\n } else if (type === 'error') {\n status = 500;\n }\n\n if (status && window[callback]) {\n delete window[callback];\n document.body.removeChild(script);\n }\n\n resolve(request.respondWith(body, {status: status}));\n };\n\n window[callback] = function (result) {\n body = JSON.stringify(result);\n };\n\n request.abort = function () {\n handler({type: 'abort'});\n };\n\n request.params[name] = callback;\n\n if (request.timeout) {\n setTimeout(request.abort, request.timeout);\n }\n\n script = document.createElement('script');\n script.src = request.getUrl();\n script.type = 'text/javascript';\n script.async = true;\n script.onload = handler;\n script.onerror = handler;\n\n document.body.appendChild(script);\n });\n}\n\n/**\n * JSONP Interceptor.\n */\n\nfunction jsonp (request) {\n\n if (request.method == 'JSONP') {\n request.client = jsonpClient;\n }\n\n}\n\n/**\n * Before Interceptor.\n */\n\nfunction before (request) {\n\n if (isFunction(request.before)) {\n request.before.call(this, request);\n }\n\n}\n\n/**\n * HTTP method override Interceptor.\n */\n\nfunction method (request) {\n\n if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {\n request.headers.set('X-HTTP-Method-Override', request.method);\n request.method = 'POST';\n }\n\n}\n\n/**\n * Header Interceptor.\n */\n\nfunction header (request) {\n\n var headers = assign({}, Http.headers.common,\n !request.crossOrigin ? Http.headers.custom : {},\n Http.headers[toLower(request.method)]\n );\n\n each(headers, function (value, name) {\n if (!request.headers.has(name)) {\n request.headers.set(name, value);\n }\n });\n\n}\n\n/**\n * XMLHttp client (Browser).\n */\n\nfunction xhrClient (request) {\n return new PromiseObj(function (resolve) {\n\n var xhr = new XMLHttpRequest(), handler = function (event) {\n\n var response = request.respondWith(\n 'response' in xhr ? xhr.response : xhr.responseText, {\n status: xhr.status === 1223 ? 204 : xhr.status, // IE9 status bug\n statusText: xhr.status === 1223 ? 'No Content' : trim(xhr.statusText)\n });\n\n each(trim(xhr.getAllResponseHeaders()).split('\\n'), function (row) {\n response.headers.append(row.slice(0, row.indexOf(':')), row.slice(row.indexOf(':') + 1));\n });\n\n resolve(response);\n };\n\n request.abort = function () { return xhr.abort(); };\n\n xhr.open(request.method, request.getUrl(), true);\n\n if (request.timeout) {\n xhr.timeout = request.timeout;\n }\n\n if (request.responseType && 'responseType' in xhr) {\n xhr.responseType = request.responseType;\n }\n\n if (request.withCredentials || request.credentials) {\n xhr.withCredentials = true;\n }\n\n if (!request.crossOrigin) {\n request.headers.set('X-Requested-With', 'XMLHttpRequest');\n }\n\n // deprecated use downloadProgress\n if (isFunction(request.progress) && request.method === 'GET') {\n xhr.addEventListener('progress', request.progress);\n }\n\n if (isFunction(request.downloadProgress)) {\n xhr.addEventListener('progress', request.downloadProgress);\n }\n\n // deprecated use uploadProgress\n if (isFunction(request.progress) && /^(POST|PUT)$/i.test(request.method)) {\n xhr.upload.addEventListener('progress', request.progress);\n }\n\n if (isFunction(request.uploadProgress) && xhr.upload) {\n xhr.upload.addEventListener('progress', request.uploadProgress);\n }\n\n request.headers.forEach(function (value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.onload = handler;\n xhr.onabort = handler;\n xhr.onerror = handler;\n xhr.ontimeout = handler;\n xhr.send(request.getBody());\n });\n}\n\n/**\n * Http client (Node).\n */\n\nfunction nodeClient (request) {\n\n var client = require('got');\n\n return new PromiseObj(function (resolve) {\n\n var url = request.getUrl();\n var body = request.getBody();\n var method = request.method;\n var headers = {}, handler;\n\n request.headers.forEach(function (value, name) {\n headers[name] = value;\n });\n\n client(url, {body: body, method: method, headers: headers}).then(handler = function (resp) {\n\n var response = request.respondWith(resp.body, {\n status: resp.statusCode,\n statusText: trim(resp.statusMessage)\n });\n\n each(resp.headers, function (value, name) {\n response.headers.set(name, value);\n });\n\n resolve(response);\n\n }, function (error$$1) { return handler(error$$1.response); });\n });\n}\n\n/**\n * Base client.\n */\n\nfunction Client (context) {\n\n var reqHandlers = [sendRequest], resHandlers = [];\n\n if (!isObject(context)) {\n context = null;\n }\n\n function Client(request) {\n while (reqHandlers.length) {\n\n var handler = reqHandlers.pop();\n\n if (isFunction(handler)) {\n\n var response = (void 0), next = (void 0);\n\n response = handler.call(context, request, function (val) { return next = val; }) || next;\n\n if (isObject(response)) {\n return new PromiseObj(function (resolve, reject) {\n\n resHandlers.forEach(function (handler) {\n response = when(response, function (response) {\n return handler.call(context, response) || response;\n }, reject);\n });\n\n when(response, resolve, reject);\n\n }, context);\n }\n\n if (isFunction(response)) {\n resHandlers.unshift(response);\n }\n\n } else {\n warn((\"Invalid interceptor of type \" + (typeof handler) + \", must be a function\"));\n }\n }\n }\n\n Client.use = function (handler) {\n reqHandlers.push(handler);\n };\n\n return Client;\n}\n\nfunction sendRequest(request) {\n\n var client = request.client || (inBrowser ? xhrClient : nodeClient);\n\n return client(request);\n}\n\n/**\n * HTTP Headers.\n */\n\nvar Headers = function Headers(headers) {\n var this$1 = this;\n\n\n this.map = {};\n\n each(headers, function (value, name) { return this$1.append(name, value); });\n};\n\nHeaders.prototype.has = function has (name) {\n return getName(this.map, name) !== null;\n};\n\nHeaders.prototype.get = function get (name) {\n\n var list = this.map[getName(this.map, name)];\n\n return list ? list.join() : null;\n};\n\nHeaders.prototype.getAll = function getAll (name) {\n return this.map[getName(this.map, name)] || [];\n};\n\nHeaders.prototype.set = function set (name, value) {\n this.map[normalizeName(getName(this.map, name) || name)] = [trim(value)];\n};\n\nHeaders.prototype.append = function append (name, value) {\n\n var list = this.map[getName(this.map, name)];\n\n if (list) {\n list.push(trim(value));\n } else {\n this.set(name, value);\n }\n};\n\nHeaders.prototype.delete = function delete$1 (name) {\n delete this.map[getName(this.map, name)];\n};\n\nHeaders.prototype.deleteAll = function deleteAll () {\n this.map = {};\n};\n\nHeaders.prototype.forEach = function forEach (callback, thisArg) {\n var this$1 = this;\n\n each(this.map, function (list, name) {\n each(list, function (value) { return callback.call(thisArg, value, name, this$1); });\n });\n};\n\nfunction getName(map, name) {\n return Object.keys(map).reduce(function (prev, curr) {\n return toLower(name) === toLower(curr) ? curr : prev;\n }, null);\n}\n\nfunction normalizeName(name) {\n\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name');\n }\n\n return trim(name);\n}\n\n/**\n * HTTP Response.\n */\n\nvar Response = function Response(body, ref) {\n var url = ref.url;\n var headers = ref.headers;\n var status = ref.status;\n var statusText = ref.statusText;\n\n\n this.url = url;\n this.ok = status >= 200 && status < 300;\n this.status = status || 0;\n this.statusText = statusText || '';\n this.headers = new Headers(headers);\n this.body = body;\n\n if (isString(body)) {\n\n this.bodyText = body;\n\n } else if (isBlob(body)) {\n\n this.bodyBlob = body;\n\n if (isBlobText(body)) {\n this.bodyText = blobText(body);\n }\n }\n};\n\nResponse.prototype.blob = function blob () {\n return when(this.bodyBlob);\n};\n\nResponse.prototype.text = function text () {\n return when(this.bodyText);\n};\n\nResponse.prototype.json = function json () {\n return when(this.text(), function (text) { return JSON.parse(text); });\n};\n\nObject.defineProperty(Response.prototype, 'data', {\n\n get: function get() {\n return this.body;\n },\n\n set: function set(body) {\n this.body = body;\n }\n\n});\n\nfunction blobText(body) {\n return new PromiseObj(function (resolve) {\n\n var reader = new FileReader();\n\n reader.readAsText(body);\n reader.onload = function () {\n resolve(reader.result);\n };\n\n });\n}\n\nfunction isBlobText(body) {\n return body.type.indexOf('text') === 0 || body.type.indexOf('json') !== -1;\n}\n\n/**\n * HTTP Request.\n */\n\nvar Request = function Request(options$$1) {\n\n this.body = null;\n this.params = {};\n\n assign(this, options$$1, {\n method: toUpper(options$$1.method || 'GET')\n });\n\n if (!(this.headers instanceof Headers)) {\n this.headers = new Headers(this.headers);\n }\n};\n\nRequest.prototype.getUrl = function getUrl () {\n return Url(this);\n};\n\nRequest.prototype.getBody = function getBody () {\n return this.body;\n};\n\nRequest.prototype.respondWith = function respondWith (body, options$$1) {\n return new Response(body, assign(options$$1 || {}, {url: this.getUrl()}));\n};\n\n/**\n * Service for sending network requests.\n */\n\nvar COMMON_HEADERS = {'Accept': 'application/json, text/plain, */*'};\nvar JSON_CONTENT_TYPE = {'Content-Type': 'application/json;charset=utf-8'};\n\nfunction Http(options$$1) {\n\n var self = this || {}, client = Client(self.$vm);\n\n defaults(options$$1 || {}, self.$options, Http.options);\n\n Http.interceptors.forEach(function (handler) {\n\n if (isString(handler)) {\n handler = Http.interceptor[handler];\n }\n\n if (isFunction(handler)) {\n client.use(handler);\n }\n\n });\n\n return client(new Request(options$$1)).then(function (response) {\n\n return response.ok ? response : PromiseObj.reject(response);\n\n }, function (response) {\n\n if (response instanceof Error) {\n error(response);\n }\n\n return PromiseObj.reject(response);\n });\n}\n\nHttp.options = {};\n\nHttp.headers = {\n put: JSON_CONTENT_TYPE,\n post: JSON_CONTENT_TYPE,\n patch: JSON_CONTENT_TYPE,\n delete: JSON_CONTENT_TYPE,\n common: COMMON_HEADERS,\n custom: {}\n};\n\nHttp.interceptor = {before: before, method: method, jsonp: jsonp, json: json, form: form, header: header, cors: cors};\nHttp.interceptors = ['before', 'method', 'jsonp', 'json', 'form', 'header', 'cors'];\n\n['get', 'delete', 'head', 'jsonp'].forEach(function (method$$1) {\n\n Http[method$$1] = function (url, options$$1) {\n return this(assign(options$$1 || {}, {url: url, method: method$$1}));\n };\n\n});\n\n['post', 'put', 'patch'].forEach(function (method$$1) {\n\n Http[method$$1] = function (url, body, options$$1) {\n return this(assign(options$$1 || {}, {url: url, method: method$$1, body: body}));\n };\n\n});\n\n/**\n * Service for interacting with RESTful services.\n */\n\nfunction Resource(url, params, actions, options$$1) {\n\n var self = this || {}, resource = {};\n\n actions = assign({},\n Resource.actions,\n actions\n );\n\n each(actions, function (action, name) {\n\n action = merge({url: url, params: assign({}, params)}, options$$1, action);\n\n resource[name] = function () {\n return (self.$http || Http)(opts(action, arguments));\n };\n });\n\n return resource;\n}\n\nfunction opts(action, args) {\n\n var options$$1 = assign({}, action), params = {}, body;\n\n switch (args.length) {\n\n case 2:\n\n params = args[0];\n body = args[1];\n\n break;\n\n case 1:\n\n if (/^(POST|PUT|PATCH)$/i.test(options$$1.method)) {\n body = args[0];\n } else {\n params = args[0];\n }\n\n break;\n\n case 0:\n\n break;\n\n default:\n\n throw 'Expected up to 2 arguments [params, body], got ' + args.length + ' arguments';\n }\n\n options$$1.body = body;\n options$$1.params = assign({}, options$$1.params, params);\n\n return options$$1;\n}\n\nResource.actions = {\n\n get: {method: 'GET'},\n save: {method: 'POST'},\n query: {method: 'GET'},\n update: {method: 'PUT'},\n remove: {method: 'DELETE'},\n delete: {method: 'DELETE'}\n\n};\n\n/**\n * Install plugin.\n */\n\nfunction plugin(Vue) {\n\n if (plugin.installed) {\n return;\n }\n\n Util(Vue);\n\n Vue.url = Url;\n Vue.http = Http;\n Vue.resource = Resource;\n Vue.Promise = PromiseObj;\n\n Object.defineProperties(Vue.prototype, {\n\n $url: {\n get: function get() {\n return options(Vue.url, this, this.$options.url);\n }\n },\n\n $http: {\n get: function get() {\n return options(Vue.http, this, this.$options.http);\n }\n },\n\n $resource: {\n get: function get() {\n return Vue.resource.bind(this);\n }\n },\n\n $promise: {\n get: function get() {\n var this$1 = this;\n\n return function (executor) { return new Vue.Promise(executor, this$1); };\n }\n }\n\n });\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(plugin);\n}\n\nexport default plugin;\nexport { Url, Http, Resource };\n","/*!\n * vue-router v3.4.9\n * (c) 2020 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 extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\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\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\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 var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\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 ? decode(parts.join('=')) : 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\n ? Object.keys(obj)\n .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 })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : 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 = 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),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\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).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\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\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\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.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\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 var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\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 // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\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\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\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), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\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 // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"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 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 next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"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// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\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 ariaCurrentValue: {\n type: String,\n default: 'page'\n },\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(\n this.to,\n current,\n this.append\n );\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 =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), 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 ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\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\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"RouterLink with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have 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 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 if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\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(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\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 enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n 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 (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\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 (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\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 (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 (\n path,\n pathToRegexpOptions\n) {\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(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\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\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 if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\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\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\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 // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\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(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\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 handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\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\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\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 // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (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 && typeof window.history.pushState === 'function'\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 // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', 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// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\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 this.listeners = [];\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 (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\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 },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && 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 var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\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 var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\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 // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect 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) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\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 === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\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 = window.location.pathname;\n if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 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) {\n function HashHistory (router, base, fallback) {\n History.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 ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.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 if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = 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 var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\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(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\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(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\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(cleanPath(base + '/#' + location));\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\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) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.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(\n location,\n 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 },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\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(\n route,\n function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\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\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 =\n 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 (raw, current, redirectedFrom) {\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' &&\n 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 if (!this$1.app) { this$1.history.teardown(); }\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 || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\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 var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\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(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\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(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};\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.4.9';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n"],"sourceRoot":""}