/
index.js.map
1 lines (1 loc) · 683 KB
/
index.js.map
1
{"version":3,"sources":["../node_modules/intersection-observer/intersection-observer.js","js/polyfills.js","../node_modules/lazysizes/lazysizes.js","../node_modules/lazysizes/plugins/noscript/ls.noscript.js","js/lazysizes.js","../node_modules/quicklink/dist/quicklink.mjs","js/quicklink.js","js/nojs.js","../node_modules/vue/dist/vue.js","../node_modules/itemsjs/vendor/lodash.js","../node_modules/itemsjs/lib/helpers.js","../node_modules/lunr/lunr.js","../node_modules/itemsjs/lib/fulltext.js","../node_modules/itemsjs/lib/lib.js","../node_modules/itemsjs/lib/index.js","js/app/components/facet.vue","js/app/filters/slugify.js","js/app/components/tool.vue","js/app/filters.config.js","js/app/filters.vue","index.js"],"names":["require","IntersectionObserver","prototype","POLL_INTERVAL","lazysizes","noscript","e","t","Promise","n","r","XMLHttpRequest","open","withCredentials","onload","status","send","i","document","createElement","relList","supports","rel","href","onerror","head","appendChild","o","navigator","connection","effectiveType","includes","saveData","self","fetch","credentials","then","u","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","c","Set","a","forEach","isIntersecting","target","has","f","delete","URL","location","toString","priority","Object","assign","timeout","timeoutFn","el","origins","hostname","ignores","urls","Array","from","querySelectorAll","observe","length","isArray","some","test","call","add","documentElement","className","replace","set","d","s","b","l","y","v","size","g","_","A","m","clear","w","O","S","__data__","k","z","On","wn","Sn","kn","String","Ie","_t","push","x","Ft","Zt","$","F","We","configurable","enumerable","value","writable","B","Mt","jt","constructor","index","input","ot","gn","nt","slice","Le","copy","mt","bn","Pe","it","ut","vn","E","Gt","ct","jn","I","Wt","ye","vt","get","st","lt","h","M","hn","D","gt","L","pn","P","et","St","N","V","Te","$e","C","Ut","R","at","ft","byteLength","byteOffset","buffer","De","name","message","ln","p","G","Ht","H","At","wt","Rt","Tt","K","pt","T","Qt","q","It","J","bt","sort","Lt","j","X","_n","Ot","He","arguments","apply","Y","Z","sn","te","tt","Et","dn","Ct","rt","iteratee","Jt","ht","map","yt","Ee","$t","Be","se","kt","source","ae","exec","lastIndex","Re","he","dt","re","ne","ze","Fe","zt","xt","cache","TypeError","Cache","Bt","Dt","Pt","Vt","Nt","ee","valueOf","ce","le","be","ve","fe","Ke","qt","Kt","Q","Xt","Yt","NaN","oe","ue","ie","pe","je","parseInt","ge","global","_e","de","Function","Ae","exports","nodeType","me","module","we","Oe","process","binding","Se","isTypedArray","ke","xe","hasOwnProperty","keys","IE_PROTO","RegExp","Me","Buffer","Ue","Symbol","Uint8Array","getPrototypeOf","Ne","create","Ve","propertyIsEnumerable","Ce","splice","isConcatSpreadable","toStringTag","Ge","getOwnPropertySymbols","qe","isBuffer","Je","min","Qe","Xe","Ye","Ze","tn","en","nn","rn","on","un","cn","an","fn","pop","hash","string","yn","ArrayBuffer","resolve","An","mn","W","constant","filter","U","flatten","intersection","keysIn","mapKeys","mapValues","memoize","orderBy","property","sortBy","transform","values","clone","eq","every","hasIn","identity","indexOf","isArguments","isArrayLike","isArrayLikeObject","isFunction","isLength","isObject","isObjectLike","isString","isSymbol","stubArray","stubFalse","toFinite","toInteger","toNumber","each","VERSION","define","amd","items","filters","val","includes_any","includes_any_element","JSON","parse","stringify","mergeAggregations","aggregations","key","field","not_filters","exclude_filters","is_conjunctive_agg","aggregation","conjunction","is_disjunctive_agg","is_not_filters_agg","is_empty_agg","type","conjunctive_field","disjunctive_field","not_filters_field","check_empty_field","output","lunr","Fulltext","config","_this","searchableFields","idx","boost","ref","doc","id","store","search","query","_this2","item","helpers","configuration","fulltext","search_time","search_start_time","getTime","prefilter","filtered_items","items_by_aggregations","per_page","page","sorting_time","sorting_start_time","sorted_items","sortings","facets_start_time","facets_time","pagination","total","timings","facets","sorting","data","Error","concat","buckets","toLowerCase","order","filterable_item","position","title","charAt","toUpperCase","bucket_field","temp","bucket","agg","result","elements","doc_count","similar","options","minimum","intersection_length","service","reindex","newItems","Vue","name_asc","tool_type","data_model","language","tags","license","getElementById","components","App","console","log"],"mappings":"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AA,EACA,EAAA,IAFA,EAAA,GAGA,KAAA,IAAA,EAAA,KAAA,KAAA,EAAA,KAAA,MACA,EAAA,IAKA,EAAA,GADA,EAAA,GAEA,KAAA,IAAA,EAAA,KAAA,KACA,EAAA,EACA,EAAA,EAAA,QAAA,EAAA,KAKA,KAAA,IACA,EAAA,EAAA,cAAA,EAAA,OAAA,IAGA,IAMA,EAAA,SAAA,iBAAA,EAAA,QAAA,WAmBA,EAAA,uBAAA,SAAA,GACA,IAAA,EAAA,EAAA,OAAA,SAAA,EAAA,GAEA,OADA,EAAA,GAAA,EACA,GACA,IAEA,OAAA,SAAA,GACA,GAAA,GAAA,EAAA,KAAA,EAAA,OAAA,IAgBA,EAAA,eAAA,EAAA,uBAAA,CACA,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,SAGA,EAAA,SAAA,iBAAA,EAAA,eAAA,kBAoBA,EAAA,QAAA,SAAA,GACA,OAAA,EAAA,QAAA,OAAA,IAAA,QAAA,OAAA,KAGA,EAAA,SAAA,iBAAA,EAAA,QAAA,WAaA,EAAA,WAAA,WACA,KAAA,KAAA,CAAA,KAAA,IACA,KAAA,OAAA,GAUA,EAAA,WAAA,KAAA,SAAA,GACA,IAA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","file":"index.js","sourceRoot":"..","sourcesContent":["/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n(function(window, document) {\n'use strict';\n\n\n// Exits early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use <html>/<body> instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n","require('intersection-observer');\nIntersectionObserver.prototype.POLL_INTERVAL = 100; // Time in milliseconds.","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(window, function l(window, document) {\n\t'use strict';\n\t/*jshint eqnull:true */\n\tif(!document.getElementsByClassName){return;}\n\n\tvar lazysizes, lazySizesConfig;\n\n\tvar docElem = document.documentElement;\n\n\tvar Date = window.Date;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\tvar addEventListener = window[_addEventListener];\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesConfig.throttleDelay;\n\t\tvar rICTimeout = lazySizesConfig.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesConfig.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesConfig.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesConfig)){\n\t\t\t\tlazySizesConfig[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\n\t\twindow.lazySizesConfig = lazySizesConfig;\n\n\t\tsetTimeout(function(){\n\t\t\tif(lazySizesConfig.init){\n\t\t\t\tinit();\n\t\t\t}\n\t\t});\n\t})();\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(e && e.target){\n\t\t\t\taddRemoveLoadEvents(e.target, resetPreloading);\n\t\t\t}\n\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tdefaultExpand = (!lazySizesConfig.expand || lazySizesConfig.expand < 1) ?\n\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\tlazySizesConfig.expand;\n\n\t\t\t\tpreloadExpand = defaultExpand * lazySizesConfig.expFactor;\n\t\t\t\thFac = lazySizesConfig.hFac;\n\t\t\t\tisBodyHidden = null;\n\n\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\tlowRuns = 0;\n\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t} else {\n\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t}\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesConfig.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\taddClass(e.target, lazySizesConfig.loadedClass);\n\t\t\tremoveClass(e.target, lazySizesConfig.loadingClass);\n\t\t\taddRemoveLoadEvents(e.target, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(e.target, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesConfig.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesConfig.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\taddRemoveLoadEvents(elem, resetPreloading, true);\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\n\t\t\t\t\taddClass(elem, lazySizesConfig.loadingClass);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesConfig.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\tif( !firesLoad || (elem.complete && elem.naturalWidth > 1)){\n\t\t\t\t\tif(firesLoad){\n\t\t\t\t\t\tresetPreloading(event);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisLoading--;\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar afterScroll = debounce(function(){\n\t\t\t\tlazySizesConfig.loadMode = 3;\n\t\t\t\tthrottledCheckElements();\n\t\t\t});\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesConfig.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', function(){\n\t\t\t\tif(lazySizesConfig.loadMode == 3){\n\t\t\t\t\tlazySizesConfig.loadMode = 2;\n\t\t\t\t}\n\t\t\t\tafterScroll();\n\t\t\t}, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tlazysizes = {\n\t\tcfg: lazySizesConfig,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\n\tvar dummyParent = {nodeName: ''};\n\tvar supportPicture = !!window.HTMLPictureElement && ('sizes' in document.createElement('img'));\n\tvar config = (window.lazySizes && lazySizes.cfg) || window.lazySizesConfig;\n\n\tvar handleLoadingElements = function(e){\n\t\tvar i, isResponsive, hasTriggered, onload, loading;\n\n\t\tvar loadElements = e.target.querySelectorAll('img, iframe');\n\n\t\tfor(i = 0; i < loadElements.length; i++){\n\t\t\tisResponsive = loadElements[i].getAttribute('srcset') || (loadElements[i].parentNode || dummyParent).nodeName.toLowerCase() == 'picture';\n\n\t\t\tif(!supportPicture && isResponsive){\n\t\t\t\tlazySizes.uP(loadElements[i]);\n\t\t\t}\n\n\t\t\tif(!loadElements[i].complete && (isResponsive || loadElements[i].src)){\n\t\t\t\te.detail.firesLoad = true;\n\n\t\t\t\tif(!onload || !loading){\n\t\t\t\t\tloading = 0;\n\t\t\t\t\t/*jshint loopfunc:true */\n\t\t\t\t\tonload = function(evt){\n\t\t\t\t\t\tloading--;\n\t\t\t\t\t\tif((!evt || loading < 1) && !hasTriggered){\n\t\t\t\t\t\t\thasTriggered = true;\n\t\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\t\tlazySizes.fire(e.target, '_lazyloaded', {}, false, true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(evt && evt.target){\n\t\t\t\t\t\t\tevt.target.removeEventListener('load', onload);\n\t\t\t\t\t\t\tevt.target.removeEventListener('error', onload);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tsetTimeout(onload, 3500);\n\t\t\t\t}\n\n\t\t\t\tloading++;\n\n\t\t\t\tloadElements[i].addEventListener('load', onload);\n\t\t\t\tloadElements[i].addEventListener('error', onload);\n\t\t\t}\n\t\t}\n\t};\n\n\tif(!config){\n\t\tconfig = {};\n\t\twindow.lazySizesConfig = config;\n\t}\n\n\tconfig.getNoscriptContent = function(noScript){\n\t\treturn noScript.textContent || noScript.innerText;\n\t};\n\n\twindow.addEventListener('lazybeforeunveil', function(e){\n\t\tif(e.detail.instance != lazySizes || e.defaultPrevented || e.target.getAttribute('data-noscript') == null){return;}\n\n\t\tvar noScript = e.target.querySelector('noscript, script[type*=\"html\"]') || {};\n\t\tvar content = config.getNoscriptContent(noScript);\n\n\t\tif(content){\n\t\t\te.target.innerHTML = content;\n\t\t\thandleLoadingElements(e);\n\t\t}\n\t});\n}));\n","var lazysizes = require(\"lazysizes\")\nvar noscript = require(\"lazysizes/plugins/noscript/ls.noscript.js\")\n// var unveilhooks = require('lazysizes/plugins/unveilhooks/ls.unveilhooks.js');\n","var e={};function t(e){return new Promise(function(t,n){var r=new XMLHttpRequest;r.open(\"GET\",e,r.withCredentials=!0),r.onload=function(){200===r.status?t():n()},r.send()})}var n,r,i=(n=\"prefetch\",((r=document.createElement(\"link\")).relList||{}).supports&&r.relList.supports(n)?function(e){return new Promise(function(t,n){var r=document.createElement(\"link\");r.rel=\"prefetch\",r.href=e,r.onload=t,r.onerror=n,document.head.appendChild(r)})}:t);function o(n,r,o){if(!(e[n]||(o=navigator.connection)&&((o.effectiveType||\"\").includes(\"2g\")||o.saveData)))return(r?function(e){return null==self.fetch?t(e):fetch(e,{credentials:\"include\"})}:i)(n).then(function(){e[n]=!0})}var u=u||function(e){var t=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},c=new Set,a=new IntersectionObserver(function(e){e.forEach(function(e){if(e.isIntersecting){var t=e.target.href;c.has(t)&&f(t)}})});function f(e){c.delete(e),o(new URL(e,location.href).toString(),a.priority)}export default function(e){e=Object.assign({timeout:2e3,priority:!1,timeoutFn:u,el:document},e),a.priority=e.priority;var t=e.origins||[location.hostname],n=e.ignores||[];e.timeoutFn(function(){e.urls?e.urls.forEach(f):Array.from(e.el.querySelectorAll(\"a\"),function(e){a.observe(e),t.length&&!t.includes(e.hostname)||function e(t,n){return Array.isArray(n)?n.some(function(n){return e(t,n)}):(n.test||n).call(n,t.href,t)}(e,n)||c.add(e.href)})},{timeout:e.timeout})}\n","import quicklink from \"quicklink\";\n\nquicklink();","document.documentElement.className = document.documentElement.className.replace(/\\bno-js\\b/, 'js');\n","/*!\n * Vue.js v2.6.8\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Vue = factory());\n}(this, function () { 'use strict';\n\n /* */\n\n var emptyObject = Object.freeze({});\n\n // These helpers produce better VM code in JS engines due to their\n // explicitness and function inlining.\n function isUndef (v) {\n return v === undefined || v === null\n }\n\n function isDef (v) {\n return v !== undefined && v !== null\n }\n\n function isTrue (v) {\n return v === true\n }\n\n function isFalse (v) {\n return v === false\n }\n\n /**\n * Check if value is primitive.\n */\n function isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n }\n\n /**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\n function isObject (obj) {\n return obj !== null && typeof obj === 'object'\n }\n\n /**\n * Get the raw type string of a value, e.g., [object Object].\n */\n var _toString = Object.prototype.toString;\n\n function toRawType (value) {\n return _toString.call(value).slice(8, -1)\n }\n\n /**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n function isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n }\n\n function isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n }\n\n /**\n * Check if val is a valid array index.\n */\n function isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n }\n\n function isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n }\n\n /**\n * Convert a value to a string that is actually rendered.\n */\n function toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n }\n\n /**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\n function toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n }\n\n /**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\n function makeMap (\n str,\n expectsLowerCase\n ) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n }\n\n /**\n * Check if a tag is a built-in tag.\n */\n var isBuiltInTag = makeMap('slot,component', true);\n\n /**\n * Check if an attribute is a reserved attribute.\n */\n var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n /**\n * Remove an item from an array.\n */\n function remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n }\n\n /**\n * Check whether an object has the property.\n */\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n function hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n }\n\n /**\n * Create a cached version of a pure function.\n */\n function cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n }\n\n /**\n * Camelize a hyphen-delimited string.\n */\n var camelizeRE = /-(\\w)/g;\n var camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n });\n\n /**\n * Capitalize a string.\n */\n var capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n });\n\n /**\n * Hyphenate a camelCase string.\n */\n var hyphenateRE = /\\B([A-Z])/g;\n var hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n });\n\n /**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n /* istanbul ignore next */\n function polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n }\n\n function nativeBind (fn, ctx) {\n return fn.bind(ctx)\n }\n\n var bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n /**\n * Convert an Array-like object to a real Array.\n */\n function toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n }\n\n /**\n * Mix properties into target object.\n */\n function extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n }\n\n /**\n * Merge an Array of Objects into a single Object.\n */\n function toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n }\n\n /* eslint-disable no-unused-vars */\n\n /**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\n function noop (a, b, c) {}\n\n /**\n * Always return false.\n */\n var no = function (a, b, c) { return false; };\n\n /* eslint-enable no-unused-vars */\n\n /**\n * Return the same value.\n */\n var identity = function (_) { return _; };\n\n /**\n * Generate a string containing static keys from compiler modules.\n */\n function genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n }\n\n /**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\n function looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n }\n\n /**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\n function looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n }\n\n /**\n * Ensure a function is called only once.\n */\n function once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n }\n\n var SSR_ATTR = 'data-server-rendered';\n\n var ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n ];\n\n var LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n ];\n\n /* */\n\n\n\n var config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: \"development\" !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: \"development\" !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n });\n\n /* */\n\n /**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\n var unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n /**\n * Check if a string starts with $ or _\n */\n function isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n }\n\n /**\n * Define a property.\n */\n function def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n }\n\n /**\n * Parse simple path.\n */\n var bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\n function parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n }\n\n /* */\n\n // can we use __proto__?\n var hasProto = '__proto__' in {};\n\n // Browser environment sniffing\n var inBrowser = typeof window !== 'undefined';\n var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\n var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\n var UA = inBrowser && window.navigator.userAgent.toLowerCase();\n var isIE = UA && /msie|trident/.test(UA);\n var isIE9 = UA && UA.indexOf('msie 9.0') > 0;\n var isEdge = UA && UA.indexOf('edge/') > 0;\n var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\n var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\n var isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n var isPhantomJS = UA && /phantomjs/.test(UA);\n var isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n // Firefox has a \"watch\" function on Object.prototype...\n var nativeWatch = ({}).watch;\n\n var supportsPassive = false;\n if (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n }\n\n // this needs to be lazy-evaled because vue may be required before\n // vue-server-renderer can set VUE_ENV\n var _isServer;\n var isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n };\n\n // detect devtools\n var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n /* istanbul ignore next */\n function isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n }\n\n var hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\n var _Set;\n /* istanbul ignore if */ // $flow-disable-line\n if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n } else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n }\n\n /* */\n\n var warn = noop;\n var tip = noop;\n var generateComponentTrace = (noop); // work around flow check\n var formatComponentName = (noop);\n\n {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n }\n\n /* */\n\n var uid = 0;\n\n /**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\n var Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n };\n\n Dep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n };\n\n Dep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n };\n\n Dep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n };\n\n Dep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (!config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n };\n\n // The current target watcher being evaluated.\n // This is globally unique because only one watcher\n // can be evaluated at a time.\n Dep.target = null;\n var targetStack = [];\n\n function pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n }\n\n function popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n }\n\n /* */\n\n var VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n ) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n };\n\n var prototypeAccessors = { child: { configurable: true } };\n\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n prototypeAccessors.child.get = function () {\n return this.componentInstance\n };\n\n Object.defineProperties( VNode.prototype, prototypeAccessors );\n\n var createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n };\n\n function createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n }\n\n // optimized shallow clone\n // used for static nodes and slot nodes because they may be reused across\n // multiple renders, cloning them avoids errors when DOM manipulations rely\n // on their elm reference.\n function cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n }\n\n /*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\n var arrayProto = Array.prototype;\n var arrayMethods = Object.create(arrayProto);\n\n var methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n ];\n\n /**\n * Intercept mutating methods and emit events\n */\n methodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n });\n\n /* */\n\n var arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n /**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\n var shouldObserve = true;\n\n function toggleObserving (value) {\n shouldObserve = value;\n }\n\n /**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\n var Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n };\n\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n Observer.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n };\n\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n };\n\n // helpers\n\n /**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\n function protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n }\n\n /**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n /* istanbul ignore next */\n function copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n }\n\n /**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\n function observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n }\n\n /**\n * Define a reactive property on an Object.\n */\n function defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n ) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n }\n\n /**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\n function set (target, key, val) {\n if (isUndef(target) || isPrimitive(target)\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n }\n\n /**\n * Delete a property and trigger change if necessary.\n */\n function del (target, key) {\n if (isUndef(target) || isPrimitive(target)\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n }\n\n /**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\n function dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n }\n\n /* */\n\n /**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\n var strats = config.optionMergeStrategies;\n\n /**\n * Options with restrictions\n */\n {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n }\n\n /**\n * Helper that recursively merges two data objects together.\n */\n function mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n }\n\n /**\n * Data\n */\n function mergeDataOrFn (\n parentVal,\n childVal,\n vm\n ) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n }\n\n strats.data = function (\n parentVal,\n childVal,\n vm\n ) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n };\n\n /**\n * Hooks and props are merged as arrays.\n */\n function mergeHook (\n parentVal,\n childVal\n ) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n }\n\n function dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n }\n\n LIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n });\n\n /**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n function mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n ) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n }\n\n ASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n });\n\n /**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n strats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n ) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n };\n\n /**\n * Other object hashes.\n */\n strats.props =\n strats.methods =\n strats.inject =\n strats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n ) {\n if (childVal && \"development\" !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n };\n strats.provide = mergeDataOrFn;\n\n /**\n * Default strategy.\n */\n var defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n\n /**\n * Validate component names\n */\n function checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n }\n\n function validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n }\n\n /**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\n function normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n }\n\n /**\n * Normalize all injections into Object-based format\n */\n function normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n }\n\n /**\n * Normalize raw function directives into object format.\n */\n function normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n }\n\n function assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n }\n\n /**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\n function mergeOptions (\n parent,\n child,\n vm\n ) {\n {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n }\n\n /**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\n function resolveAsset (\n options,\n type,\n id,\n warnMissing\n ) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n }\n\n /* */\n\n\n\n function validateProp (\n key,\n propOptions,\n propsData,\n vm\n ) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n }\n\n /**\n * Get the default value of a prop.\n */\n function getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n }\n\n /**\n * Assert whether a prop is valid.\n */\n function assertProp (\n prop,\n name,\n value,\n vm,\n absent\n ) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n }\n\n var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\n function assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n }\n\n /**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\n function getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n }\n\n function isSameType (a, b) {\n return getType(a) === getType(b)\n }\n\n function getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n }\n\n function getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n }\n\n function styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n }\n\n function isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n }\n\n function isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n }\n\n /* */\n\n function handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n }\n\n function invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n ) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res)) {\n // issue #9511\n // reassign to res to avoid catch triggering multiple times when nested calls\n res = res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n }\n\n function globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n }\n\n function logError (err, vm, info) {\n {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n }\n\n /* */\n\n var isUsingMicroTask = false;\n\n var callbacks = [];\n var pending = false;\n\n function flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n\n // Here we have async deferring wrappers using microtasks.\n // In 2.5 we used (macro) tasks (in combination with microtasks).\n // However, it has subtle problems when state is changed right before repaint\n // (e.g. #6813, out-in transitions).\n // Also, using (macro) tasks in event handler would cause some weird behaviors\n // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n // So we now use microtasks everywhere, again.\n // A major drawback of this tradeoff is that there are some scenarios\n // where microtasks have too high a priority and fire in between supposedly\n // sequential events (e.g. #4521, #6690, which have workarounds)\n // or even between bubbling of the same event (#6566).\n var timerFunc;\n\n // The nextTick behavior leverages the microtask queue, which can be accessed\n // via either native Promise.then or MutationObserver.\n // MutationObserver has wider support, however it is seriously bugged in\n // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n // completely stops working after triggering a few times... so, if native\n // Promise is available, we will use it:\n /* istanbul ignore next, $flow-disable-line */\n if (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n } else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n )) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n } else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n }\n\n function nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n }\n\n /* */\n\n var mark;\n var measure;\n\n {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n }\n\n /* not type checking this file because flow doesn't play well with Proxy */\n\n var initProxy;\n\n {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n }\n\n /* */\n\n var seenObjects = new _Set();\n\n /**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\n function traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n }\n\n function _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n }\n\n /* */\n\n var normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n });\n\n function createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n }\n\n function updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n ) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n }\n\n /* */\n\n function mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n }\n\n /* */\n\n function extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n ) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n }\n\n function checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n ) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n }\n\n /* */\n\n // The template compiler attempts to minimize the need for normalization by\n // statically analyzing the template at compile time.\n //\n // For plain HTML markup, normalization can be completely skipped because the\n // generated render function is guaranteed to return Array<VNode>. There are\n // two cases where extra normalization is needed:\n\n // 1. When the children contains components - because a functional component\n // may return an Array instead of a single root. In this case, just a simple\n // normalization is needed - if any child is an Array, we flatten the whole\n // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n // because functional components already normalize their own children.\n function simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n }\n\n // 2. When the children contains constructs that always generated nested Arrays,\n // e.g. <template>, <slot>, v-for, or when the children is provided by user\n // with hand-written render functions / JSX. In such cases a full normalization\n // is needed to cater to all possible types of children values.\n function normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n }\n\n function isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n }\n\n function normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n }\n\n /* */\n\n function initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n }\n\n function initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n }\n });\n toggleObserving(true);\n }\n }\n\n function resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n }\n\n /* */\n\n\n\n /**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\n function resolveSlots (\n children,\n context\n ) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n }\n\n function isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n }\n\n /* */\n\n function normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n ) {\n var res;\n var isStable = slots ? !!slots.$stable : true;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n Object.keys(normalSlots).length === 0\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n return res\n }\n\n function normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && res.length === 0\n ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n }\n\n function proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n }\n\n /* */\n\n /**\n * Runtime helper for rendering v-for lists.\n */\n function renderList (\n val,\n render\n ) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n }\n\n /* */\n\n /**\n * Runtime helper for rendering <slot>\n */\n function renderSlot (\n name,\n fallback,\n props,\n bindObject\n ) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (!isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n }\n\n /* */\n\n /**\n * Runtime helper for resolving filters\n */\n function resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n }\n\n /* */\n\n function isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n }\n\n /**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\n function checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n ) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n }\n\n /* */\n\n /**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\n function bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n ) {\n if (value) {\n if (!isObject(value)) {\n warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n if (!(key in hash) && !(camelizedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + camelizedKey)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n }\n\n /* */\n\n /**\n * Runtime helper for rendering static trees.\n */\n function renderStatic (\n index,\n isInFor\n ) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n }\n\n /**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\n function markOnce (\n tree,\n index,\n key\n ) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n }\n\n function markStatic (\n tree,\n key,\n isOnce\n ) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n }\n\n function markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n }\n\n /* */\n\n function bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n }\n\n /* */\n\n function resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n ) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n }\n\n /* */\n\n function bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n }\n\n // helper to dynamically append modifier runtime markers to event names.\n // ensure only append when value is already string, otherwise it will be cast\n // to string and cause the type check to miss.\n function prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n }\n\n /* */\n\n function installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n }\n\n /* */\n\n function FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n ) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n }\n\n installRenderHelpers(FunctionalRenderContext.prototype);\n\n function createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n ) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n }\n\n function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n }\n\n function mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n }\n\n /* */\n\n /* */\n\n /* */\n\n /* */\n\n // inline hooks to be invoked on component VNodes during patch\n var componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n };\n\n var hooksToMerge = Object.keys(componentVNodeHooks);\n\n function createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n ) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n }\n\n function createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n ) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n }\n\n function installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n }\n\n function mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n }\n\n // transform component v-model info (value and callback) into\n // prop and event handler respectively.\n function transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n }\n\n /* */\n\n var SIMPLE_NORMALIZE = 1;\n var ALWAYS_NORMALIZE = 2;\n\n // wrapper function for providing a more flexible interface\n // without getting yelled at by flow\n function createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n ) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n }\n\n function _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n ) {\n if (isDef(data) && isDef((data).__ob__)) {\n warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n }\n\n function applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n }\n\n // ref #5318\n // necessary to ensure parent re-render when deep bindings like :style and\n // :class are used on slot nodes\n function registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n }\n\n /* */\n\n function initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n }\n }\n\n var currentRenderingInstance = null;\n\n function renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n }\n\n /* */\n\n function ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n }\n\n function createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n ) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n }\n\n function resolveAsyncComponent (\n factory,\n baseCtor\n ) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (!isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n \"timeout (\" + (res.timeout) + \"ms)\"\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n }\n\n /* */\n\n function isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n }\n\n /* */\n\n function getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n }\n\n /* */\n\n /* */\n\n function initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n }\n\n var target;\n\n function add (event, fn) {\n target.$on(event, fn);\n }\n\n function remove$1 (event, fn) {\n target.$off(event, fn);\n }\n\n function createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n }\n\n function updateComponentListeners (\n vm,\n listeners,\n oldListeners\n ) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n }\n\n function eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n }\n\n /* */\n\n var activeInstance = null;\n var isUpdatingChildComponent = false;\n\n function setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n }\n\n function initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n }\n\n function lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n }\n\n function mountComponent (\n vm,\n el,\n hydrating\n ) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n }\n\n function updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n ) {\n {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n {\n isUpdatingChildComponent = false;\n }\n }\n\n function isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n }\n\n function activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n }\n\n function deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n }\n\n function callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n }\n\n /* */\n\n var MAX_UPDATE_COUNT = 100;\n\n var queue = [];\n var activatedChildren = [];\n var has = {};\n var circular = {};\n var waiting = false;\n var flushing = false;\n var index = 0;\n\n /**\n * Reset the scheduler's state.\n */\n function resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n {\n circular = {};\n }\n waiting = flushing = false;\n }\n\n // Async edge case #6566 requires saving the timestamp when event listeners are\n // attached. However, calling performance.now() has a perf overhead especially\n // if the page has thousands of event listeners. Instead, we take a timestamp\n // every time the scheduler flushes and use that for all event listeners\n // attached during that flush.\n var currentFlushTimestamp = 0;\n\n // Async edge case fix requires storing an event listener's attach timestamp.\n var getNow = Date.now;\n\n // Determine what event timestamp the browser is using. Annoyingly, the\n // timestamp can either be hi-res (relative to page load) or low-res\n // (relative to UNIX epoch), so in order to compare time we have to use the\n // same timestamp type when saving the flush timestamp.\n if (inBrowser && getNow() > document.createEvent('Event').timeStamp) {\n // if the low-res timestamp which is bigger than the event timestamp\n // (which is evaluated AFTER) it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listeners as well.\n getNow = function () { return performance.now(); };\n }\n\n /**\n * Flush both queues and run the watchers.\n */\n function flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n }\n\n function callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n }\n\n /**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\n function queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n }\n\n function callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n }\n\n /**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\n function queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (!config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n }\n\n /* */\n\n\n\n var uid$2 = 0;\n\n /**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\n var Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n ) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = expOrFn.toString();\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n };\n\n /**\n * Evaluate the getter, and re-collect dependencies.\n */\n Watcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n };\n\n /**\n * Add a dependency to this directive.\n */\n Watcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n };\n\n /**\n * Clean up for dependency collection.\n */\n Watcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n };\n\n /**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\n Watcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n };\n\n /**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\n Watcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n };\n\n /**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\n Watcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n };\n\n /**\n * Depend on all deps collected by this watcher.\n */\n Watcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n };\n\n /**\n * Remove self from all dependencies' subscriber list.\n */\n Watcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n };\n\n /* */\n\n var sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n };\n\n function proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n }\n\n function initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n }\n\n function initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n }\n\n function initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n }\n\n function getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n }\n\n var computedWatcherOptions = { lazy: true };\n\n function initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n }\n\n function defineComputed (\n target,\n key,\n userDef\n ) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n }\n\n function createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n }\n\n function createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n }\n\n function initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n }\n\n function initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n }\n\n function createWatcher (\n vm,\n expOrFn,\n handler,\n options\n ) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n }\n\n function stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n }\n\n /* */\n\n var uid$3 = 0;\n\n function initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n {\n initProxy(vm);\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n }\n\n function initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n }\n\n function resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n }\n\n function resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n }\n\n function Vue (options) {\n if (!(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n }\n\n initMixin(Vue);\n stateMixin(Vue);\n eventsMixin(Vue);\n lifecycleMixin(Vue);\n renderMixin(Vue);\n\n /* */\n\n function initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n }\n\n /* */\n\n function initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n }\n\n /* */\n\n function initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n }\n\n function initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n }\n\n function initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n }\n\n /* */\n\n function initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n }\n\n /* */\n\n\n\n function getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n }\n\n function matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n }\n\n function pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n }\n\n function pruneCacheEntry (\n cache,\n key,\n keys,\n current\n ) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n }\n\n var patternTypes = [String, RegExp, Array];\n\n var KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n };\n\n var builtInComponents = {\n KeepAlive: KeepAlive\n };\n\n /* */\n\n function initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n }\n\n initGlobalAPI(Vue);\n\n Object.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n });\n\n Object.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n });\n\n // expose FunctionalRenderContext for ssr runtime helper installation\n Object.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n });\n\n Vue.version = '2.6.8';\n\n /* */\n\n // these are reserved for web because they are directly compiled away\n // during template compilation\n var isReservedAttr = makeMap('style,class');\n\n // attributes that should be using props for binding\n var acceptValue = makeMap('input,textarea,option,select,progress');\n var mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n };\n\n var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\n var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\n var convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n };\n\n var isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n );\n\n var xlinkNS = 'http://www.w3.org/1999/xlink';\n\n var isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n };\n\n var getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n };\n\n var isFalsyAttrValue = function (val) {\n return val == null || val === false\n };\n\n /* */\n\n function genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n }\n\n function mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n }\n\n function renderClass (\n staticClass,\n dynamicClass\n ) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n }\n\n function concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n }\n\n function stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n }\n\n function stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n }\n\n function stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n }\n\n /* */\n\n var namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n };\n\n var isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n );\n\n // this map is intentionally selective, only covering SVG elements that may\n // contain child elements.\n var isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n );\n\n var isPreTag = function (tag) { return tag === 'pre'; };\n\n var isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n };\n\n function getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n }\n\n var unknownElementCache = Object.create(null);\n function isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n }\n\n var isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n /* */\n\n /**\n * Query an element selector if it's not an element already.\n */\n function query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n }\n\n /* */\n\n function createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n }\n\n function createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n }\n\n function createTextNode (text) {\n return document.createTextNode(text)\n }\n\n function createComment (text) {\n return document.createComment(text)\n }\n\n function insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n }\n\n function removeChild (node, child) {\n node.removeChild(child);\n }\n\n function appendChild (node, child) {\n node.appendChild(child);\n }\n\n function parentNode (node) {\n return node.parentNode\n }\n\n function nextSibling (node) {\n return node.nextSibling\n }\n\n function tagName (node) {\n return node.tagName\n }\n\n function setTextContent (node, text) {\n node.textContent = text;\n }\n\n function setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n }\n\n var nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n });\n\n /* */\n\n var ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n };\n\n function registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n }\n\n /**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\n var emptyNode = new VNode('', {}, []);\n\n var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\n function sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n }\n\n function sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n }\n\n function createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n }\n\n function createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n }\n\n /* */\n\n var directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n };\n\n function updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n }\n\n function _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n }\n\n var emptyModifiers = Object.create(null);\n\n function normalizeDirectives$1 (\n dirs,\n vm\n ) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n }\n\n function getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n }\n\n function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n }\n\n var baseModules = [\n ref,\n directives\n ];\n\n /* */\n\n function updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n }\n\n function setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n }\n\n function baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n }\n\n var attrs = {\n create: updateAttrs,\n update: updateAttrs\n };\n\n /* */\n\n function updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n }\n\n var klass = {\n create: updateClass,\n update: updateClass\n };\n\n /* */\n\n var validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\n function parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n }\n\n function wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n }\n\n /* */\n\n\n\n /* eslint-disable no-unused-vars */\n function baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n }\n /* eslint-enable no-unused-vars */\n\n function pluckModuleFunction (\n modules,\n key\n ) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n }\n\n function addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n }\n\n function addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n }\n\n // add a raw attr (use this in preTransforms)\n function addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n }\n\n function addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n ) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n }\n\n function prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n }\n\n function addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n ) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n }\n\n function getRawBindingAttr (\n el,\n name\n ) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n }\n\n function getBindingAttr (\n el,\n name,\n getStatic\n ) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n }\n\n // note: this only removes the attr from the Array (attrsList) so that it\n // doesn't get processed by processAttrs.\n // By default it does NOT remove it from the map (attrsMap) because the map is\n // needed during codegen.\n function getAndRemoveAttr (\n el,\n name,\n removeFromMap\n ) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n }\n\n function getAndRemoveAttrByRegex (\n el,\n name\n ) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n }\n\n function rangeSetItem (\n item,\n range\n ) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n }\n\n /* */\n\n /**\n * Cross-platform code generation for component v-model\n */\n function genComponentModel (\n el,\n value,\n modifiers\n ) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n }\n\n /**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\n function genAssignmentCode (\n value,\n assignment\n ) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n }\n\n /**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\n var len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\n function parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n }\n\n function next () {\n return str.charCodeAt(++index$1)\n }\n\n function eof () {\n return index$1 >= len\n }\n\n function isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n }\n\n function parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n }\n\n function parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n }\n\n /* */\n\n var warn$1;\n\n // in some cases, the event used has to be determined at runtime\n // so we used some reserved tokens during compile.\n var RANGE_TOKEN = '__r';\n var CHECKBOX_RADIO_TOKEN = '__c';\n\n function model (\n el,\n dir,\n _warn\n ) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n }\n\n function genCheckboxModel (\n el,\n value,\n modifiers\n ) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n }\n\n function genRadioModel (\n el,\n value,\n modifiers\n ) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n }\n\n function genSelect (\n el,\n value,\n modifiers\n ) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n }\n\n function genDefaultModel (\n el,\n value,\n modifiers\n ) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n }\n\n /* */\n\n // normalize v-model event tokens that can only be determined at runtime.\n // it's important to place the event as the first in the array because\n // the whole point is ensuring the v-model callback gets called before\n // user-attached handlers.\n function normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n }\n\n var target$1;\n\n function createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n }\n\n // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n // implementation and does not fire microtasks in between event propagation, so\n // safe to exclude.\n var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\n function add$1 (\n name,\n handler,\n capture,\n passive\n ) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // #9462 bail for iOS 9 bug: event.timeStamp is 0 after history.pushState\n e.timeStamp === 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n }\n\n function remove$2 (\n name,\n handler,\n capture,\n _target\n ) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n }\n\n function updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n }\n\n var events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n };\n\n /* */\n\n var svgContainer;\n\n function updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n }\n\n // check platforms/web/util/attrs.js acceptValue\n\n\n function shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n }\n\n function isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n }\n\n function isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n }\n\n var domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n };\n\n /* */\n\n var parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n });\n\n // merge static and dynamic style data on the same vnode\n function normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n }\n\n // normalize possible array / string values into Object\n function normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n }\n\n /**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\n function getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n }\n\n /* */\n\n var cssVarRE = /^--/;\n var importantRE = /\\s*!important$/;\n var setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n };\n\n var vendorNames = ['Webkit', 'Moz', 'ms'];\n\n var emptyStyle;\n var normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n });\n\n function updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n }\n\n var style = {\n create: updateStyle,\n update: updateStyle\n };\n\n /* */\n\n var whitespaceRE = /\\s+/;\n\n /**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n function addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n }\n\n /**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n function removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n }\n\n /* */\n\n function resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n }\n\n var autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n });\n\n var hasTransition = inBrowser && !isIE9;\n var TRANSITION = 'transition';\n var ANIMATION = 'animation';\n\n // Transition property/event sniffing\n var transitionProp = 'transition';\n var transitionEndEvent = 'transitionend';\n var animationProp = 'animation';\n var animationEndEvent = 'animationend';\n if (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n }\n\n // binding to window is necessary to make hot reload work in IE in strict mode\n var raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\n function nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n }\n\n function addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n }\n\n function removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n }\n\n function whenTransitionEnds (\n el,\n expectedType,\n cb\n ) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n }\n\n var transformRE = /\\b(transform|all)(,|$)/;\n\n function getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n }\n\n function getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n }\n\n // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n // in a locale-dependent way, using a comma instead of a dot.\n // If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n // as a floor function) causing unexpected behaviors\n function toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n }\n\n /* */\n\n function enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n\n function leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n }\n\n // only used in dev mode\n function checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n }\n\n function isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n }\n\n /**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\n function getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n }\n\n function _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n }\n\n var transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n } : {};\n\n var platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n ];\n\n /* */\n\n // the directive module should be applied last, after all\n // built-in modules have been applied.\n var modules = platformModules.concat(baseModules);\n\n var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n /**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n /* istanbul ignore if */\n if (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n }\n\n var directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n };\n\n function setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n }\n\n function actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n }\n\n function hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n }\n\n function getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n }\n\n function onCompositionStart (e) {\n e.target.composing = true;\n }\n\n function onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n }\n\n function trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n }\n\n /* */\n\n // recursively search for possible transition defined inside the component root\n function locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n }\n\n var show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n };\n\n var platformDirectives = {\n model: directive,\n show: show\n };\n\n /* */\n\n var transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n };\n\n // in case the child is also an abstract component, e.g. <keep-alive>\n // we want to recursively retrieve the real component to be rendered\n function getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n }\n\n function extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n }\n\n function placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n }\n\n function hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n }\n\n function isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n }\n\n var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\n var isVShowDirective = function (d) { return d.name === 'show'; };\n\n var Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n };\n\n /* */\n\n var props = extend({\n tag: String,\n moveClass: String\n }, transitionProps);\n\n delete props.mode;\n\n var TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n };\n\n function callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n }\n\n function recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n }\n\n function applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n }\n\n var platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n };\n\n /* */\n\n // install platform specific utils\n Vue.config.mustUseProp = mustUseProp;\n Vue.config.isReservedTag = isReservedTag;\n Vue.config.isReservedAttr = isReservedAttr;\n Vue.config.getTagNamespace = getTagNamespace;\n Vue.config.isUnknownElement = isUnknownElement;\n\n // install platform runtime directives & components\n extend(Vue.options.directives, platformDirectives);\n extend(Vue.options.components, platformComponents);\n\n // install platform patch function\n Vue.prototype.__patch__ = inBrowser ? patch : noop;\n\n // public mount method\n Vue.prototype.$mount = function (\n el,\n hydrating\n ) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n };\n\n // devtools global hook\n /* istanbul ignore next */\n if (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n }\n\n /* */\n\n var defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\n var regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\n var buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n });\n\n\n\n function parseText (\n text,\n delimiters\n ) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n }\n\n /* */\n\n function transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n }\n\n function genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n }\n\n var klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n };\n\n /* */\n\n function transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n }\n\n function genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n }\n\n var style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n };\n\n /* */\n\n var decoder;\n\n var he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n };\n\n /* */\n\n var isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n );\n\n // Elements that you can, intentionally, leave open\n // (and which close themselves)\n var canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n );\n\n // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\n var isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n );\n\n /**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n // Regular Expressions for parsing tags and attributes\n var attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n var dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\n var ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\n var qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\n var startTagOpen = new RegExp((\"^<\" + qnameCapture));\n var startTagClose = /^\\s*(\\/?)>/;\n var endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\n var doctype = /^<!DOCTYPE [^>]+>/i;\n // #7298: escape - to avoid being pased as HTML comment when inlined in page\n var comment = /^<!\\--/;\n var conditionalComment = /^<!\\[/;\n\n // Special Elements (can contain anything)\n var isPlainTextElement = makeMap('script,style,textarea', true);\n var reCache = {};\n\n var decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n',\n '	': '\\t',\n ''': \"'\"\n };\n var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\n var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n // #5992\n var isIgnoreNewlineTag = makeMap('pre,textarea', true);\n var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\n function decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n }\n\n function parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (!stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (i > pos || !tagName &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n }\n\n /* */\n\n var onRE = /^@|^v-on:/;\n var dirRE = /^v-|^@|^:/;\n var forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n var forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n var stripParensRE = /^\\(|\\)$/g;\n var dynamicArgRE = /^\\[.*\\]$/;\n\n var argRE = /:(.*)$/;\n var bindRE = /^:|^\\.|^v-bind:/;\n var modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\n var slotRE = /^v-slot(:|$)|^#/;\n\n var lineBreakRE = /[\\r\\n]/;\n var whitespaceRE$1 = /\\s+/g;\n\n var invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\n var decodeHTMLCached = cached(he.decode);\n\n var emptySlotScopeToken = \"_empty_\";\n\n // configurable state\n var warn$2;\n var delimiters;\n var transforms;\n var preTransforms;\n var postTransforms;\n var platformIsPreTag;\n var platformMustUseProp;\n var platformGetTagNamespace;\n var maybeComponent;\n\n function createASTElement (\n tag,\n attrs,\n parent\n ) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n }\n\n /**\n * Convert HTML string to AST.\n */\n function parse (\n template,\n options\n ) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n }\n\n function processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n }\n\n function processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n }\n\n function processElement (\n element,\n options\n ) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n }\n\n function processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n }\n\n function processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n }\n\n function processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n }\n\n\n\n function parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n }\n\n function processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n }\n\n function processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n }\n\n function findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n }\n\n function addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n }\n\n function processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n }\n\n // handle content being passed to a component as slot,\n // e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\n function processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n }\n\n function getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n }\n\n // handle <slot/> outlets\n function processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n }\n\n function processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n }\n\n function processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n }\n\n function checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n }\n\n function parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n }\n\n function makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n }\n\n // for script (e.g. type=\"x/template\") or style, do not decode content\n function isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n }\n\n function isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n }\n\n var ieNSBug = /^xmlns:NS\\d+/;\n var ieNSPrefix = /^NS\\d+:/;\n\n /* istanbul ignore next */\n function guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n }\n\n function checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n }\n\n /* */\n\n function preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n }\n\n function cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n }\n\n var model$1 = {\n preTransformNode: preTransformNode\n };\n\n var modules$1 = [\n klass$1,\n style$1,\n model$1\n ];\n\n /* */\n\n function text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n }\n\n /* */\n\n function html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n }\n\n var directives$1 = {\n model: model,\n text: text,\n html: html\n };\n\n /* */\n\n var baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n };\n\n /* */\n\n var isStaticKey;\n var isPlatformReservedTag;\n\n var genStaticKeysCached = cached(genStaticKeys$1);\n\n /**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\n function optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n }\n\n function genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n }\n\n function markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n }\n\n function markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n }\n\n function isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n }\n\n function isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n }\n\n /* */\n\n var fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*\\(/;\n var fnInvokeRE = /\\([^)]*?\\);*$/;\n var simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n // KeyboardEvent.keyCode aliases\n var keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n };\n\n // KeyboardEvent.key aliases\n var keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n };\n\n // #4868: modifiers that prevent the execution of the listener\n // need to explicitly return null so that we can determine whether to remove\n // the listener for .once\n var genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\n var modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n };\n\n function genHandlers (\n events,\n isNative\n ) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n }\n\n function genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n }\n\n function genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n }\n\n function genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n }\n\n /* */\n\n function on (el, dir) {\n if (dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n }\n\n /* */\n\n function bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n }\n\n /* */\n\n var baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n };\n\n /* */\n\n\n\n\n\n var CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n };\n\n\n\n function generate (\n ast,\n options\n ) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n }\n\n function genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n }\n\n // hoist static sub-trees out\n function genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n }\n\n // v-once\n function genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n }\n\n function genIf (\n el,\n state,\n altGen,\n altEmpty\n ) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n }\n\n function genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n ) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n }\n\n function genFor (\n el,\n state,\n altGen,\n altHelper\n ) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n }\n\n function genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n }\n\n function genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n }\n\n function genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (el.children.length !== 1 || ast.type !== 1) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n }\n\n function genScopedSlots (\n el,\n slots,\n state\n ) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n }\n\n function hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n }\n\n function containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n }\n\n function genScopedSlot (\n el,\n state\n ) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n }\n\n function genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n ) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n }\n\n // determine the normalization needed for the children array.\n // 0: no normalization needed\n // 1: simple normalization needed (possible 1-level deep nested array)\n // 2: full normalization needed\n function getNormalizationType (\n children,\n maybeComponent\n ) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n }\n\n function needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n }\n\n function genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n }\n\n function genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n }\n\n function genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n }\n\n function genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n }\n\n // componentName is el.component, take it as argument to shun flow's pessimistic refinement\n function genComponent (\n componentName,\n el,\n state\n ) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n }\n\n function genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n }\n\n // #3895, #4268\n function transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n }\n\n /* */\n\n\n\n // these keywords should not appear inside expressions, but operators like\n // typeof, instanceof and in are allowed\n var prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n ).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n // these unary operators should not be used as property/method names\n var unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n ).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n // strip strings in expressions\n var stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n // detect problematic expressions in a template\n function detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n }\n\n function checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n }\n\n function checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n }\n\n function checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n }\n\n function checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n ) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n }\n\n function checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n }\n\n /* */\n\n var range = 2;\n\n function generateCodeFrame (\n source,\n start,\n end\n ) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n }\n\n function repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n }\n\n /* */\n\n\n\n function createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n }\n\n function createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n }\n\n /* */\n\n function createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n }\n\n /* */\n\n // `createCompilerCreator` allows creating compilers that use alternative\n // parser/optimizer/codegen, e.g the SSR optimizing compiler.\n // Here we just export a default compiler using the default parts.\n var createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n ) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n });\n\n /* */\n\n var ref$1 = createCompiler(baseOptions);\n var compile = ref$1.compile;\n var compileToFunctions = ref$1.compileToFunctions;\n\n /* */\n\n // check whether current browser encodes a char inside attribute values\n var div;\n function getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf(' ') > 0\n }\n\n // #3663: IE encodes newlines inside attribute values while other browsers don't\n var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n // #6828: chrome encodes content in a[href]\n var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n /* */\n\n var idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n });\n\n var mount = Vue.prototype.$mount;\n Vue.prototype.$mount = function (\n el,\n hydrating\n ) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (!template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: \"development\" !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n };\n\n /**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\n function getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n }\n\n Vue.compile = compileToFunctions;\n\n return Vue;\n\n}));\n","/**\n * @license\n * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\n * Build: `lodash include=\"some,forEach,map,mapKeys,mapValues,every,includes,intersection,filter,keys,clone,flatten,transform,sortBy,orderBy\" -o lib/lodash.js -p`\n */\n;(function(){function t(t,e){return t.set(e[0],e[1]),t}function e(t,e){return t.add(e),t}function n(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function r(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&false!==e(t[n],n,t););return t}function o(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return false;return true}function u(t,e){for(var n=-1,r=null==t?0:t.length,o=0,u=[];++n<r;){\nvar c=t[n];e(c,n,t)&&(u[o++]=c)}return u}function c(t,e){return!(null==t||!t.length)&&-1<(e===e?d(t,e,0):s(t,b,0))}function i(t,e){for(var n=-1,r=null==t?0:t.length,o=Array(r);++n<r;)o[n]=e(t[n],n,t);return o}function a(t,e){for(var n=-1,r=e.length,o=t.length;++n<r;)t[o+n]=e[n];return t}function f(t,e,n){for(var r=-1,o=null==t?0:t.length;++r<o;)n=e(n,t[r],r,t);return n}function l(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return true;return false}function s(t,e,n){var r=t.length;for(n+=-1;++n<r;)if(e(t[n],n,t))return n;\nreturn-1}function b(t){return t!==t}function h(t){return function(e){return null==e?Zt:e[t]}}function p(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].c;return t}function y(t){return function(e){return t(e)}}function j(t,e){return i(e,function(e){return t[e]})}function v(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function g(t){var e=Object;return function(n){return t(e(n))}}function _(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function d(t,e,n){\n--n;for(var r=t.length;++n<r;)if(t[n]===e)return n;return-1}function A(){}function m(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function w(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function O(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function S(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new O;++e<n;)this.add(t[e])}function k(t){this.size=(this.__data__=new w(t)).size;\n}function z(t,e){var n=On(t),r=!n&&wn(t),o=!n&&!r&&Sn(t),u=!n&&!r&&!o&&kn(t);if(n=n||r||o||u){for(var r=t.length,c=String,i=-1,a=Array(r);++i<r;)a[i]=c(i);r=a}else r=[];var f,c=r.length;for(f in t)!e&&!Ie.call(t,f)||n&&(\"length\"==f||o&&(\"offset\"==f||\"parent\"==f)||u&&(\"buffer\"==f||\"byteLength\"==f||\"byteOffset\"==f)||_t(f,c))||r.push(f);return r}function x(t,e,n){var r=t[e];Ie.call(t,e)&&Ft(r,n)&&(n!==Zt||e in t)||$(t,e,n)}function F(t,e){for(var n=t.length;n--;)if(Ft(t[n][0],e))return n;return-1}function I(t,e){\nreturn t&&ut(e,Wt(e),t)}function E(t,e){return t&&ut(e,Gt(e),t)}function $(t,e,n){\"__proto__\"==e&&We?We(t,e,{configurable:true,enumerable:true,value:n,writable:true}):t[e]=n}function B(t,e,n,o,u,c){var i,a=1&e,f=2&e,l=4&e;if(n&&(i=u?n(t,o,u,c):n(t)),i!==Zt)return i;if(!Mt(t))return t;if(o=On(t)){if(i=jt(t),!a)return ot(t,i)}else{var s=gn(t),b=\"[object Function]\"==s||\"[object GeneratorFunction]\"==s;if(Sn(t))return nt(t,a);if(\"[object Object]\"==s||\"[object Arguments]\"==s||b&&!u){if(i=f||b?{}:typeof t.constructor!=\"function\"||mt(t)?{}:bn(Pe(t)),\n!a)return f?it(t,E(i,t)):ct(t,I(i,t))}else{if(!ye[s])return u?t:{};i=vt(t,s,B,a)}}if(c||(c=new k),u=c.get(t))return u;c.set(t,i);var f=l?f?st:lt:f?Gt:Wt,h=o?Zt:f(t);return r(h||t,function(r,o){h&&(o=r,r=t[o]),x(i,o,B(r,e,n,o,t,c))}),i}function M(t,e){var n=true;return hn(t,function(t,r,o){return n=!!e(t,r,o)}),n}function U(t,e){var n=[];return hn(t,function(t,r,o){e(t,r,o)&&n.push(t)}),n}function D(t,e,n,r,o){var u=-1,c=t.length;for(n||(n=gt),o||(o=[]);++u<c;){var i=t[u];0<e&&n(i)?1<e?D(i,e-1,n,r,o):a(o,i):r||(o[o.length]=i);\n}return o}function L(t,e){return t&&pn(t,e,Wt)}function P(t,e){e=et(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[St(e[n++])];return n&&n==r?t:Zt}function N(t,e,n){return e=e(t),On(t)?e:a(e,n(t))}function V(t){if(null==t)t=t===Zt?\"[object Undefined]\":\"[object Null]\";else if(Te&&Te in Object(t)){var e=Ie.call(t,Te),n=t[Te];try{t[Te]=Zt;var r=true}catch(t){}var o=$e.call(t);r&&(e?t[Te]=n:delete t[Te]),t=o}else t=$e.call(t);return t}function C(t){return Ut(t)&&\"[object Arguments]\"==V(t)}function R(t,e,n,r,o){\nif(t===e)e=true;else if(null==t||null==e||!Ut(t)&&!Ut(e))e=t!==t&&e!==e;else t:{var u=On(t),c=On(e),i=u?\"[object Array]\":gn(t),a=c?\"[object Array]\":gn(e),i=\"[object Arguments]\"==i?\"[object Object]\":i,a=\"[object Arguments]\"==a?\"[object Object]\":a,f=\"[object Object]\"==i,c=\"[object Object]\"==a;if((a=i==a)&&Sn(t)){if(!Sn(e)){e=false;break t}u=true,f=false}if(a&&!f)o||(o=new k),e=u||kn(t)?at(t,e,n,r,R,o):ft(t,e,i,n,r,R,o);else{if(!(1&n)&&(u=f&&Ie.call(t,\"__wrapped__\"),i=c&&Ie.call(e,\"__wrapped__\"),u||i)){t=u?t.value():t,\ne=i?e.value():e,o||(o=new k),e=R(t,e,n,r,o);break t}if(a)e:if(o||(o=new k),u=1&n,i=lt(t),c=i.length,a=lt(e).length,c==a||u){for(f=c;f--;){var l=i[f];if(!(u?l in e:Ie.call(e,l))){e=false;break e}}if((a=o.get(t))&&o.get(e))e=a==e;else{a=true,o.set(t,e),o.set(e,t);for(var s=u;++f<c;){var l=i[f],b=t[l],h=e[l];if(r)var p=u?r(h,b,l,e,t,o):r(b,h,l,t,e,o);if(p===Zt?b!==h&&!R(b,h,n,r,o):!p){a=false;break}s||(s=\"constructor\"==l)}a&&!s&&(n=t.constructor,r=e.constructor,n!=r&&\"constructor\"in t&&\"constructor\"in e&&!(typeof n==\"function\"&&n instanceof n&&typeof r==\"function\"&&r instanceof r)&&(a=false)),\no.delete(t),o.delete(e),e=a}}else e=false;else e=false}}return e}function T(t,e){var n=e.length,r=n;if(null==t)return!r;for(t=Object(t);n--;){var o=e[n];if(o[2]?o[1]!==t[o[0]]:!(o[0]in t))return false}for(;++n<r;){var o=e[n],u=o[0],c=t[u],i=o[1];if(o[2]){if(c===Zt&&!(u in t))return false}else if(o=new k,void 0===Zt?!R(i,c,3,void 0,o):1)return false}return true}function W(t){return Ut(t)&&Bt(t.length)&&!!pe[V(t)]}function G(t){return typeof t==\"function\"?t:null==t?Ht:typeof t==\"object\"?On(t)?H(t[0],t[1]):K(t):Qt(t)}function q(t,e){\nvar n=-1,r=It(t)?Array(t.length):[];return hn(t,function(t,o,u){r[++n]=e(t,o,u)}),r}function K(t){var e=pt(t);return 1==e.length&&e[0][2]?wt(e[0][0],e[0][1]):function(n){return n===t||T(n,e)}}function H(t,e){return At(t)&&e===e&&!Mt(e)?wt(St(t),e):function(n){var r=Rt(n,t);return r===Zt&&r===e?Tt(n,t):R(e,r,3)}}function J(t,e,n){var r=-1;return e=i(e.length?e:[Ht],y(bt())),t=q(t,function(t){return{a:i(e,function(e){return e(t)}),b:++r,c:t}}),p(t,function(t,e){var r;t:{r=-1;for(var o=t.a,u=e.a,c=o.length,i=n.length;++r<c;){\nvar a;e:{a=o[r];var f=u[r];if(a!==f){var l=a!==Zt,s=null===a,b=a===a,h=Lt(a),p=f!==Zt,y=null===f,j=f===f,v=Lt(f);if(!y&&!v&&!h&&a>f||h&&p&&j&&!y&&!v||s&&p&&j||!l&&j||!b){a=1;break e}if(!s&&!h&&!v&&a<f||v&&l&&b&&!s&&!h||y&&l&&b||!p&&b||!j){a=-1;break e}}a=0}if(a){r=r>=i?a:a*(\"desc\"==n[r]?-1:1);break t}}r=t.b-e.b}return r})}function Q(t){return function(e){return P(e,t)}}function X(t){return _n(Ot(t,Ht),t+\"\")}function Y(t,e){var n;return hn(t,function(t,r,o){return n=e(t,r,o),!n}),!!n}function Z(t){\nif(typeof t==\"string\")return t;if(On(t))return i(t,Z)+\"\";if(Lt(t))return sn?sn.call(t):\"\";var e=t+\"\";return\"0\"==e&&1/t==-te?\"-0\":e}function tt(t){return Et(t)?t:[]}function et(t,e){return On(t)?t:At(t,e)?[t]:dn(Ct(t))}function nt(t,e){if(e)return t.slice();var n=t.length,n=Le?Le(n):new t.constructor(n);return t.copy(n),n}function rt(t){var e=new t.constructor(t.byteLength);return new De(e).set(new De(t)),e}function ot(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}function ut(t,e,n){\nvar r=!n;n||(n={});for(var o=-1,u=e.length;++o<u;){var c=e[o],i=Zt;i===Zt&&(i=t[c]),r?$(n,c,i):x(n,c,i)}return n}function ct(t,e){return ut(t,jn(t),e)}function it(t,e){return ut(t,vn(t),e)}function at(t,e,n,r,o,u){var c=1&n,i=t.length,a=e.length;if(i!=a&&!(c&&a>i))return false;if((a=u.get(t))&&u.get(e))return a==e;var a=-1,f=true,s=2&n?new S:Zt;for(u.set(t,e),u.set(e,t);++a<i;){var b=t[a],h=e[a];if(r)var p=c?r(h,b,a,e,t,u):r(b,h,a,t,e,u);if(p!==Zt){if(p)continue;f=false;break}if(s){if(!l(e,function(t,e){if(!s.has(e)&&(b===t||o(b,t,n,r,u)))return s.push(e);\n})){f=false;break}}else if(b!==h&&!o(b,h,n,r,u)){f=false;break}}return u.delete(t),u.delete(e),f}function ft(t,e,n,r,o,u,c){switch(n){case\"[object DataView]\":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)break;t=t.buffer,e=e.buffer;case\"[object ArrayBuffer]\":if(t.byteLength!=e.byteLength||!u(new De(t),new De(e)))break;return true;case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return Ft(+t,+e);case\"[object Error]\":return t.name==e.name&&t.message==e.message;case\"[object RegExp]\":\ncase\"[object String]\":return t==e+\"\";case\"[object Map]\":var i=v;case\"[object Set]\":if(i||(i=_),t.size!=e.size&&!(1&r))break;return(n=c.get(t))?n==e:(r|=2,c.set(t,e),e=at(i(t),i(e),r,o,u,c),c.delete(t),e);case\"[object Symbol]\":if(ln)return ln.call(t)==ln.call(e)}return false}function lt(t){return N(t,Wt,jn)}function st(t){return N(t,Gt,vn)}function bt(){var t=A.iteratee||Jt,t=t===Jt?G:t;return arguments.length?t(arguments[0],arguments[1]):t}function ht(t,e){var n=t.__data__,r=typeof e;return(\"string\"==r||\"number\"==r||\"symbol\"==r||\"boolean\"==r?\"__proto__\"!==e:null===e)?n[typeof e==\"string\"?\"string\":\"hash\"]:n.map;\n}function pt(t){for(var e=Wt(t),n=e.length;n--;){var r=e[n],o=t[r];e[n]=[r,o,o===o&&!Mt(o)]}return e}function yt(t,e){var n=null==t?Zt:t[e];return(!Mt(n)||Ee&&Ee in n?0:($t(n)?Be:se).test(kt(n)))?n:Zt}function jt(t){var e=t.length,n=t.constructor(e);return e&&\"string\"==typeof t[0]&&Ie.call(t,\"index\")&&(n.index=t.index,n.input=t.input),n}function vt(n,r,o,u){var c=n.constructor;switch(r){case\"[object ArrayBuffer]\":return rt(n);case\"[object Boolean]\":case\"[object Date]\":return new c(+n);case\"[object DataView]\":\nreturn r=u?rt(n.buffer):n.buffer,new n.constructor(r,n.byteOffset,n.byteLength);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return r=u?rt(n.buffer):n.buffer,new n.constructor(r,n.byteOffset,n.length);case\"[object Map]\":return r=u?o(v(n),1):v(n),f(r,t,new n.constructor);case\"[object Number]\":case\"[object String]\":\nreturn new c(n);case\"[object RegExp]\":return r=new n.constructor(n.source,ae.exec(n)),r.lastIndex=n.lastIndex,r;case\"[object Set]\":return r=u?o(_(n),1):_(n),f(r,e,new n.constructor);case\"[object Symbol]\":return ln?Object(ln.call(n)):{}}}function gt(t){return On(t)||wn(t)||!!(Re&&t&&t[Re])}function _t(t,e){return e=null==e?9007199254740991:e,!!e&&(typeof t==\"number\"||he.test(t))&&-1<t&&0==t%1&&t<e}function dt(t,e,n){if(!Mt(n))return false;var r=typeof e;return!!(\"number\"==r?It(n)&&_t(e,n.length):\"string\"==r&&e in n)&&Ft(n[e],t);\n}function At(t,e){if(On(t))return false;var n=typeof t;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=t&&!Lt(t))||(re.test(t)||!ne.test(t)||null!=e&&t in Object(e))}function mt(t){var e=t&&t.constructor;return t===(typeof e==\"function\"&&e.prototype||ze)}function wt(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==Zt||t in Object(n)))}}function Ot(t,e){var r=void 0,r=He(r===Zt?t.length-1:r,0);return function(){for(var o=arguments,u=-1,c=He(o.length-r,0),i=Array(c);++u<c;)i[u]=o[r+u];for(u=-1,\nc=Array(r+1);++u<r;)c[u]=o[u];return c[r]=e(i),n(t,this,c)}}function St(t){if(typeof t==\"string\"||Lt(t))return t;var e=t+\"\";return\"0\"==e&&1/t==-te?\"-0\":e}function kt(t){if(null!=t){try{return Fe.call(t)}catch(t){}return t+\"\"}return\"\"}function zt(t,e){return(On(t)?r:hn)(t,bt(e,3))}function xt(t,e){function n(){var r=arguments,o=e?e.apply(this,r):r[0],u=n.cache;return u.has(o)?u.get(o):(r=t.apply(this,r),n.cache=u.set(o,r)||u,r)}if(typeof t!=\"function\"||null!=e&&typeof e!=\"function\")throw new TypeError(\"Expected a function\");\nreturn n.cache=new(xt.Cache||O),n}function Ft(t,e){return t===e||t!==t&&e!==e}function It(t){return null!=t&&Bt(t.length)&&!$t(t)}function Et(t){return Ut(t)&&It(t)}function $t(t){return!!Mt(t)&&(t=V(t),\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t)}function Bt(t){return typeof t==\"number\"&&-1<t&&0==t%1&&9007199254740991>=t}function Mt(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}function Ut(t){return null!=t&&typeof t==\"object\";\n}function Dt(t){return typeof t==\"string\"||!On(t)&&Ut(t)&&\"[object String]\"==V(t)}function Lt(t){return typeof t==\"symbol\"||Ut(t)&&\"[object Symbol]\"==V(t)}function Pt(t){return t?(t=Vt(t),t===te||t===-te?1.7976931348623157e308*(0>t?-1:1):t===t?t:0):0===t?t:0}function Nt(t){t=Pt(t);var e=t%1;return t===t?e?t-e:t:0}function Vt(t){if(typeof t==\"number\")return t;if(Lt(t))return ee;if(Mt(t)&&(t=typeof t.valueOf==\"function\"?t.valueOf():t,t=Mt(t)?t+\"\":t),typeof t!=\"string\")return 0===t?t:+t;t=t.replace(ce,\"\");\nvar e=le.test(t);return e||be.test(t)?ve(t.slice(2),e?2:8):fe.test(t)?ee:+t}function Ct(t){return null==t?\"\":Z(t)}function Rt(t,e,n){return t=null==t?Zt:P(t,e),t===Zt?n:t}function Tt(t,e){var n;if(n=null!=t){n=t;var r;r=et(e,n);for(var o=-1,u=r.length,c=false;++o<u;){var i=St(r[o]);if(!(c=null!=n&&null!=n&&i in Object(n)))break;n=n[i]}c||++o!=u?n=c:(u=null==n?0:n.length,n=!!u&&Bt(u)&&_t(i,u)&&(On(n)||wn(n)))}return n}function Wt(t){if(It(t))t=z(t);else if(mt(t)){var e,n=[];for(e in Object(t))Ie.call(t,e)&&\"constructor\"!=e&&n.push(e);\nt=n}else t=Ke(t);return t}function Gt(t){if(It(t))t=z(t,true);else if(Mt(t)){var e,n=mt(t),r=[];for(e in t)(\"constructor\"!=e||!n&&Ie.call(t,e))&&r.push(e);t=r}else{if(e=[],null!=t)for(n in Object(t))e.push(n);t=e}return t}function qt(t){return null==t?[]:j(t,Wt(t))}function Kt(t){return function(){return t}}function Ht(t){return t}function Jt(t){return G(typeof t==\"function\"?t:B(t,1))}function Qt(t){return At(t)?h(St(t)):Q(t)}function Xt(){return[]}function Yt(){return false}var Zt,te=1/0,ee=NaN,ne=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,re=/^\\w*$/,oe=/^\\./,ue=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,ce=/^\\s+|\\s+$/g,ie=/\\\\(\\\\)?/g,ae=/\\w*$/,fe=/^[-+]0x[0-9a-f]+$/i,le=/^0b[01]+$/i,se=/^\\[object .+?Constructor\\]$/,be=/^0o[0-7]+$/i,he=/^(?:0|[1-9]\\d*)$/,pe={};\npe[\"[object Float32Array]\"]=pe[\"[object Float64Array]\"]=pe[\"[object Int8Array]\"]=pe[\"[object Int16Array]\"]=pe[\"[object Int32Array]\"]=pe[\"[object Uint8Array]\"]=pe[\"[object Uint8ClampedArray]\"]=pe[\"[object Uint16Array]\"]=pe[\"[object Uint32Array]\"]=true,pe[\"[object Arguments]\"]=pe[\"[object Array]\"]=pe[\"[object ArrayBuffer]\"]=pe[\"[object Boolean]\"]=pe[\"[object DataView]\"]=pe[\"[object Date]\"]=pe[\"[object Error]\"]=pe[\"[object Function]\"]=pe[\"[object Map]\"]=pe[\"[object Number]\"]=pe[\"[object Object]\"]=pe[\"[object RegExp]\"]=pe[\"[object Set]\"]=pe[\"[object String]\"]=pe[\"[object WeakMap]\"]=false;\nvar ye={};ye[\"[object Arguments]\"]=ye[\"[object Array]\"]=ye[\"[object ArrayBuffer]\"]=ye[\"[object DataView]\"]=ye[\"[object Boolean]\"]=ye[\"[object Date]\"]=ye[\"[object Float32Array]\"]=ye[\"[object Float64Array]\"]=ye[\"[object Int8Array]\"]=ye[\"[object Int16Array]\"]=ye[\"[object Int32Array]\"]=ye[\"[object Map]\"]=ye[\"[object Number]\"]=ye[\"[object Object]\"]=ye[\"[object RegExp]\"]=ye[\"[object Set]\"]=ye[\"[object String]\"]=ye[\"[object Symbol]\"]=ye[\"[object Uint8Array]\"]=ye[\"[object Uint8ClampedArray]\"]=ye[\"[object Uint16Array]\"]=ye[\"[object Uint32Array]\"]=true,\nye[\"[object Error]\"]=ye[\"[object Function]\"]=ye[\"[object WeakMap]\"]=false;var je,ve=parseInt,ge=typeof global==\"object\"&&global&&global.Object===Object&&global,_e=typeof self==\"object\"&&self&&self.Object===Object&&self,de=ge||_e||Function(\"return this\")(),Ae=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,me=Ae&&typeof module==\"object\"&&module&&!module.nodeType&&module,we=me&&me.exports===Ae,Oe=we&&ge.process;t:{try{je=Oe&&Oe.binding&&Oe.binding(\"util\");break t}catch(t){}je=void 0}var Se=je&&je.isTypedArray,ke=Array.prototype,ze=Object.prototype,xe=de[\"__core-js_shared__\"],Fe=Function.prototype.toString,Ie=ze.hasOwnProperty,Ee=function(){\nvar t=/[^.]+$/.exec(xe&&xe.keys&&xe.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}(),$e=ze.toString,Be=RegExp(\"^\"+Fe.call(Ie).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Me=we?de.Buffer:Zt,Ue=de.Symbol,De=de.Uint8Array,Le=Me?Me.f:Zt,Pe=g(Object.getPrototypeOf),Ne=Object.create,Ve=ze.propertyIsEnumerable,Ce=ke.splice,Re=Ue?Ue.isConcatSpreadable:Zt,Te=Ue?Ue.toStringTag:Zt,We=function(){try{var t=yt(Object,\"defineProperty\");\nreturn t({},\"\",{}),t}catch(t){}}(),Ge=Object.getOwnPropertySymbols,qe=Me?Me.isBuffer:Zt,Ke=g(Object.keys),He=Math.max,Je=Math.min,Qe=Date.now,Xe=yt(de,\"DataView\"),Ye=yt(de,\"Map\"),Ze=yt(de,\"Promise\"),tn=yt(de,\"Set\"),en=yt(de,\"WeakMap\"),nn=yt(Object,\"create\"),rn=kt(Xe),on=kt(Ye),un=kt(Ze),cn=kt(tn),an=kt(en),fn=Ue?Ue.prototype:Zt,ln=fn?fn.valueOf:Zt,sn=fn?fn.toString:Zt,bn=function(){function t(){}return function(e){return Mt(e)?Ne?Ne(e):(t.prototype=e,e=new t,t.prototype=Zt,e):{}}}();m.prototype.clear=function(){\nthis.__data__=nn?nn(null):{},this.size=0},m.prototype.delete=function(t){return t=this.has(t)&&delete this.__data__[t],this.size-=t?1:0,t},m.prototype.get=function(t){var e=this.__data__;return nn?(t=e[t],\"__lodash_hash_undefined__\"===t?Zt:t):Ie.call(e,t)?e[t]:Zt},m.prototype.has=function(t){var e=this.__data__;return nn?e[t]!==Zt:Ie.call(e,t)},m.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nn&&e===Zt?\"__lodash_hash_undefined__\":e,this},w.prototype.clear=function(){\nthis.__data__=[],this.size=0},w.prototype.delete=function(t){var e=this.__data__;return t=F(e,t),!(0>t)&&(t==e.length-1?e.pop():Ce.call(e,t,1),--this.size,true)},w.prototype.get=function(t){var e=this.__data__;return t=F(e,t),0>t?Zt:e[t][1]},w.prototype.has=function(t){return-1<F(this.__data__,t)},w.prototype.set=function(t,e){var n=this.__data__,r=F(n,t);return 0>r?(++this.size,n.push([t,e])):n[r][1]=e,this},O.prototype.clear=function(){this.size=0,this.__data__={hash:new m,map:new(Ye||w),string:new m\n}},O.prototype.delete=function(t){return t=ht(this,t).delete(t),this.size-=t?1:0,t},O.prototype.get=function(t){return ht(this,t).get(t)},O.prototype.has=function(t){return ht(this,t).has(t)},O.prototype.set=function(t,e){var n=ht(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},S.prototype.add=S.prototype.push=function(t){return this.__data__.set(t,\"__lodash_hash_undefined__\"),this},S.prototype.has=function(t){return this.__data__.has(t)},k.prototype.clear=function(){this.__data__=new w,\nthis.size=0},k.prototype.delete=function(t){var e=this.__data__;return t=e.delete(t),this.size=e.size,t},k.prototype.get=function(t){return this.__data__.get(t)},k.prototype.has=function(t){return this.__data__.has(t)},k.prototype.set=function(t,e){var n=this.__data__;if(n instanceof w){var r=n.__data__;if(!Ye||199>r.length)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new O(r)}return n.set(t,e),this.size=n.size,this};var hn=function(t,e){return function(n,r){if(null==n)return n;if(!It(n))return t(n,r);\nfor(var o=n.length,u=e?o:-1,c=Object(n);(e?u--:++u<o)&&false!==r(c[u],u,c););return n}}(L),pn=function(t){return function(e,n,r){var o=-1,u=Object(e);r=r(e);for(var c=r.length;c--;){var i=r[t?c:++o];if(false===n(u[i],i,u))break}return e}}(),yn=We?function(t,e){return We(t,\"toString\",{configurable:true,enumerable:false,value:Kt(e),writable:true})}:Ht,jn=Ge?function(t){return null==t?[]:(t=Object(t),u(Ge(t),function(e){return Ve.call(t,e)}))}:Xt,vn=Ge?function(t){for(var e=[];t;)a(e,jn(t)),t=Pe(t);return e}:Xt,gn=V;\n(Xe&&\"[object DataView]\"!=gn(new Xe(new ArrayBuffer(1)))||Ye&&\"[object Map]\"!=gn(new Ye)||Ze&&\"[object Promise]\"!=gn(Ze.resolve())||tn&&\"[object Set]\"!=gn(new tn)||en&&\"[object WeakMap]\"!=gn(new en))&&(gn=function(t){var e=V(t);if(t=(t=\"[object Object]\"==e?t.constructor:Zt)?kt(t):\"\")switch(t){case rn:return\"[object DataView]\";case on:return\"[object Map]\";case un:return\"[object Promise]\";case cn:return\"[object Set]\";case an:return\"[object WeakMap]\"}return e});var _n=function(t){var e=0,n=0;return function(){\nvar r=Qe(),o=16-(r-n);if(n=r,0<o){if(800<=++e)return arguments[0]}else e=0;return t.apply(Zt,arguments)}}(yn),dn=function(t){t=xt(t,function(t){return 500===e.size&&e.clear(),t});var e=t.cache;return t}(function(t){var e=[];return oe.test(t)&&e.push(\"\"),t.replace(ue,function(t,n,r,o){e.push(r?o.replace(ie,\"$1\"):n||t)}),e}),An=X(function(t){var e=i(t,tt);if(e.length&&e[0]===t[0]){t=e[0].length;for(var n=e.length,r=n,o=Array(n),u=1/0,a=[];r--;){var f=e[r],u=Je(f.length,u);o[r]=120<=t&&120<=f.length?new S(r&&f):Zt;\n}var f=e[0],l=-1,s=o[0];t:for(;++l<t&&a.length<u;){var b=f[l],h=b,b=0!==b?b:0;if(s?!s.has(h):!c(a,h)){for(r=n;--r;){var p=o[r];if(p?!p.has(h):!c(e[r],h))continue t}s&&s.push(h),a.push(b)}}e=a}else e=[];return e}),mn=X(function(t,e){if(null==t)return[];var n=e.length;return 1<n&&dt(t,e[0],e[1])?e=[]:2<n&&dt(e[0],e[1],e[2])&&(e=[e[0]]),J(t,D(e,1),[])});xt.Cache=O;var wn=C(function(){return arguments}())?C:function(t){return Ut(t)&&Ie.call(t,\"callee\")&&!Ve.call(t,\"callee\")},On=Array.isArray,Sn=qe||Yt,kn=Se?y(Se):W;\nA.constant=Kt,A.filter=function(t,e){return(On(t)?u:U)(t,bt(e,3))},A.flatten=function(t){return(null==t?0:t.length)?D(t,1):[]},A.intersection=An,A.iteratee=Jt,A.keys=Wt,A.keysIn=Gt,A.map=function(t,e){return(On(t)?i:q)(t,bt(e,3))},A.mapKeys=function(t,e){var n={};return e=bt(e,3),L(t,function(t,r,o){$(n,e(t,r,o),t)}),n},A.mapValues=function(t,e){var n={};return e=bt(e,3),L(t,function(t,r,o){$(n,r,e(t,r,o))}),n},A.memoize=xt,A.orderBy=function(t,e,n,r){return null==t?[]:(On(e)||(e=null==e?[]:[e]),\nn=r?Zt:n,On(n)||(n=null==n?[]:[n]),J(t,e,n))},A.property=Qt,A.sortBy=mn,A.transform=function(t,e,n){var o=On(t),u=o||Sn(t)||kn(t);if(e=bt(e,4),null==n){var c=t&&t.constructor;n=u?o?new c:[]:Mt(t)&&$t(c)?bn(Pe(t)):{}}return(u?r:L)(t,function(t,r,o){return e(n,t,r,o)}),n},A.values=qt,A.clone=function(t){return B(t,4)},A.eq=Ft,A.every=function(t,e,n){var r=On(t)?o:M;return n&&dt(t,e,n)&&(e=Zt),r(t,bt(e,3))},A.forEach=zt,A.get=Rt,A.hasIn=Tt,A.identity=Ht,A.includes=function(t,e,n,r){return t=It(t)?t:qt(t),\nn=n&&!r?Nt(n):0,r=t.length,0>n&&(n=He(r+n,0)),Dt(t)?n<=r&&-1<t.indexOf(e,n):!!r&&-1<(e===e?d(t,e,n):s(t,b,n))},A.isArguments=wn,A.isArray=On,A.isArrayLike=It,A.isArrayLikeObject=Et,A.isBuffer=Sn,A.isFunction=$t,A.isLength=Bt,A.isObject=Mt,A.isObjectLike=Ut,A.isString=Dt,A.isSymbol=Lt,A.isTypedArray=kn,A.stubArray=Xt,A.stubFalse=Yt,A.some=function(t,e,n){var r=On(t)?l:Y;return n&&dt(t,e,n)&&(e=Zt),r(t,bt(e,3))},A.toFinite=Pt,A.toInteger=Nt,A.toNumber=Vt,A.toString=Ct,A.each=zt,A.VERSION=\"4.17.4\",typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?(de._=A,\ndefine(function(){return A})):me?((me.exports=A)._=A,Ae._=A):de._=A}).call(this);","\"use strict\";\n\nvar _ = require('./../vendor/lodash');\n\nmodule.exports.includes = function (items, filters) {\n return !filters || _.every(filters, function (val) {\n return _.includes(items, val);\n });\n};\n/**\n * not sure if mathematically correct\n */\n\n\nmodule.exports.includes_any = function (items, filters) {\n //return !filters || (_.isArray(filters) && !filters.length) || _.some(filters, (val) => {\n return !filters || filters instanceof Array && filters.length === 0 || _.some(filters, function (val) {\n return _.includes(items, val);\n });\n};\n/**\n * if included particular elements (not array)\n */\n\n\nmodule.exports.includes_any_element = function (items, filters) {\n return _.some(filters, function (val) {\n return _.includes(items, val);\n });\n};\n\nmodule.exports.intersection = function (a, b) {\n if (!b) {\n return a;\n }\n\n return _.intersection(a, _.flatten(b));\n};\n\nvar clone = function clone(val) {\n try {\n return JSON.parse(JSON.stringify(val));\n } catch (e) {\n return val;\n }\n};\n\nmodule.exports.mergeAggregations = function (aggregations, input) {\n return _.mapValues(clone(aggregations), function (val, key) {\n if (!val.field) {\n val.field = key;\n }\n\n var filters = [];\n\n if (input.filters && input.filters[key]) {\n filters = input.filters[key];\n }\n\n val.filters = filters;\n var not_filters = [];\n\n if (input.not_filters && input.not_filters[key]) {\n not_filters = input.not_filters[key];\n }\n\n if (input.exclude_filters && input.exclude_filters[key]) {\n not_filters = input.exclude_filters[key];\n }\n\n val.not_filters = not_filters;\n return val;\n });\n};\n/**\n * should be moved to the new facet class\n */\n\n\nvar is_conjunctive_agg = function is_conjunctive_agg(aggregation) {\n return aggregation.conjunction !== false;\n};\n\nvar is_disjunctive_agg = function is_disjunctive_agg(aggregation) {\n return aggregation.conjunction === false;\n};\n\nvar is_not_filters_agg = function is_not_filters_agg(aggregation) {\n return aggregation.not_filters instanceof Array && aggregation.not_filters.length > 0;\n};\n\nvar is_empty_agg = function is_empty_agg(aggregation) {\n return aggregation.type === 'is_empty';\n};\n\nvar conjunctive_field = function conjunctive_field(set, filters) {\n return module.exports.includes(set, filters);\n};\n\nvar disjunctive_field = function disjunctive_field(set, filters) {\n return module.exports.includes_any(set, filters);\n};\n\nvar not_filters_field = function not_filters_field(set, filters) {\n return !module.exports.includes_any_element(set, filters);\n};\n\nvar check_empty_field = function check_empty_field(set, filters) {\n var output = ['not_empty'];\n\n if (set === '' || set === undefined || set === null || set instanceof Array && set.length === 0) {\n //return true;\n output = ['empty'];\n } // check also if filters is not empty array\n\n\n if (filters && !module.exports.includes(output, filters)) {\n return false;\n }\n\n return output;\n};\n/*var empty_field = function(set, filters) {\n if (set === undefined || set === null || (set instanceof Array && set.length === 0)) {\n return true;\n }\n\n return false;\n}*/\n\n\nmodule.exports.is_conjunctive_agg = is_conjunctive_agg;\nmodule.exports.is_disjunctive_agg = is_disjunctive_agg;\nmodule.exports.is_not_filters_agg = is_not_filters_agg;\nmodule.exports.is_empty_agg = is_empty_agg;\nmodule.exports.conjunctive_field = conjunctive_field;\nmodule.exports.disjunctive_field = disjunctive_field;\nmodule.exports.not_filters_field = not_filters_field;\nmodule.exports.check_empty_field = check_empty_field;","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 1.0.0\n * Copyright (C) 2017 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * Convenience function for instantiating a new lunr index and configuring it\n * with the default pipeline functions and the passed config function.\n *\n * When using this convenience function a new index will be created with the\n * following functions already in the pipeline:\n *\n * lunr.StopWordFilter - filters out any stop words before they enter the\n * index\n *\n * lunr.stemmer - stems the tokens before entering the index.\n *\n * Example:\n *\n * var idx = lunr(function () {\n * this.field('title', 10)\n * this.field('tags', 100)\n * this.field('body')\n * \n * this.ref('cid')\n * \n * this.pipeline.add(function () {\n * // some custom pipeline function\n * })\n * \n * })\n *\n * @param {Function} config A function that will be called with the new instance\n * of the lunr.Index as both its context and first parameter. It can be used to\n * customize the instance of new lunr.Index.\n * @namespace\n * @module\n * @returns {lunr.Index}\n *\n */\nvar lunr = function (config) {\n var idx = new lunr.Index\n\n idx.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n if (config) config.call(idx, idx)\n\n return idx\n}\n\nlunr.version = \"1.0.0\"\n/*!\n * lunr.utils\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf Utils\n */\nlunr.utils.warn = (function (global) {\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf Utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n/*!\n * lunr.EventEmitter\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.EventEmitter is an event emitter for lunr. It manages adding and removing event handlers and triggering events and their handlers.\n *\n * @constructor\n */\nlunr.EventEmitter = function () {\n this.events = {}\n}\n\n/**\n * Binds a handler function to a specific event(s).\n *\n * Can bind a single function to many different events in one call.\n *\n * @param {String} [eventName] The name(s) of events to bind this function to.\n * @param {Function} fn The function to call when an event is fired.\n * @memberOf EventEmitter\n */\nlunr.EventEmitter.prototype.addListener = function () {\n var args = Array.prototype.slice.call(arguments),\n fn = args.pop(),\n names = args\n\n if (typeof fn !== \"function\") throw new TypeError (\"last argument must be a function\")\n\n names.forEach(function (name) {\n if (!this.hasHandler(name)) this.events[name] = []\n this.events[name].push(fn)\n }, this)\n}\n\n/**\n * Removes a handler function from a specific event.\n *\n * @param {String} eventName The name of the event to remove this function from.\n * @param {Function} fn The function to remove from an event.\n * @memberOf EventEmitter\n */\nlunr.EventEmitter.prototype.removeListener = function (name, fn) {\n if (!this.hasHandler(name)) return\n\n var fnIndex = this.events[name].indexOf(fn)\n this.events[name].splice(fnIndex, 1)\n\n if (!this.events[name].length) delete this.events[name]\n}\n\n/**\n * Calls all functions bound to the given event.\n *\n * Additional data can be passed to the event handler as arguments to `emit`\n * after the event name.\n *\n * @param {String} eventName The name of the event to emit.\n * @memberOf EventEmitter\n */\nlunr.EventEmitter.prototype.emit = function (name) {\n if (!this.hasHandler(name)) return\n\n var args = Array.prototype.slice.call(arguments, 1)\n\n this.events[name].forEach(function (fn) {\n fn.apply(undefined, args)\n })\n}\n\n/**\n * Checks whether a handler has ever been stored against an event.\n *\n * @param {String} eventName The name of the event to check.\n * @private\n * @memberOf EventEmitter\n */\nlunr.EventEmitter.prototype.hasHandler = function (name) {\n return name in this.events\n}\n\n/*!\n * lunr.tokenizer\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * @module\n * @param {String} obj The string to convert into tokens\n * @see lunr.tokenizer.separator\n * @returns {Array}\n */\nlunr.tokenizer = function (obj) {\n if (!arguments.length || obj == null || obj == undefined) return []\n if (Array.isArray(obj)) return obj.map(function (t) { return lunr.utils.asString(t).toLowerCase() })\n\n return obj.toString().trim().toLowerCase().split(lunr.tokenizer.separator)\n}\n\n/**\n * The sperator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n\n/**\n * Loads a previously serialised tokenizer.\n *\n * A tokenizer function to be loaded must already be registered with lunr.tokenizer.\n * If the serialised tokenizer has not been registered then an error will be thrown.\n *\n * @param {String} label The label of the serialised tokenizer.\n * @returns {Function}\n * @memberOf tokenizer\n */\nlunr.tokenizer.load = function (label) {\n var fn = this.registeredFunctions[label]\n\n if (!fn) {\n throw new Error('Cannot load un-registered function: ' + label)\n }\n\n return fn\n}\n\nlunr.tokenizer.label = 'default'\n\nlunr.tokenizer.registeredFunctions = {\n 'default': lunr.tokenizer\n}\n\n/**\n * Register a tokenizer function.\n *\n * Functions that are used as tokenizers should be registered if they are to be used with a serialised index.\n *\n * Registering a function does not add it to an index, functions must still be associated with a specific index for them to be used when indexing and searching documents.\n *\n * @param {Function} fn The function to register.\n * @param {String} label The label to register this function with\n * @memberOf tokenizer\n */\nlunr.tokenizer.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing tokenizer: ' + label)\n }\n\n fn.label = label\n this.registeredFunctions[label] = fn\n}\n/*!\n * lunr.Pipeline\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = {}\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {Function} fn The function to check for.\n * @param {String} label The label to register this function with\n * @memberOf Pipeline\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {Function} fn The function to check for.\n * @private\n * @memberOf Pipeline\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n * @memberOf Pipeline\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load un-registered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {Function} functions Any number of functions to add to the pipeline.\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {Function} existingFn A function that already exists in the pipeline.\n * @param {Function} newFn The new function to add to the pipeline.\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {Function} existingFn A function that already exists in the pipeline.\n * @param {Function} newFn The new function to add to the pipeline.\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {Function} fn The function to remove from the pipeline.\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var out = [],\n tokenLength = tokens.length,\n stackLength = this._stack.length\n\n for (var i = 0; i < tokenLength; i++) {\n var token = tokens[i]\n\n for (var j = 0; j < stackLength; j++) {\n token = this._stack[j](token, i, tokens)\n if (token === void 0 || token === '') break\n };\n\n if (token !== void 0 && token !== '') out.push(token)\n };\n\n return out\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n * @memberOf Pipeline\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.Vectors implement vector related operations for\n * a series of elements.\n *\n * @constructor\n */\nlunr.Vector = function () {\n this._magnitude = null\n this.list = undefined\n this.length = 0\n}\n\n/**\n * lunr.Vector.Node is a simple struct for each node\n * in a lunr.Vector.\n *\n * @private\n * @param {Number} The index of the node in the vector.\n * @param {Object} The data at this node in the vector.\n * @param {lunr.Vector.Node} The node directly after this node in the vector.\n * @constructor\n * @memberOf Vector\n */\nlunr.Vector.Node = function (idx, val, next) {\n this.idx = idx\n this.val = val\n this.next = next\n}\n\n/**\n * Inserts a new value at a position in a vector.\n *\n * @param {Number} The index at which to insert a value.\n * @param {Object} The object to insert in the vector.\n * @memberOf Vector.\n */\nlunr.Vector.prototype.insert = function (idx, val) {\n this._magnitude = undefined;\n var list = this.list\n\n if (!list) {\n this.list = new lunr.Vector.Node (idx, val, list)\n return this.length++\n }\n\n if (idx < list.idx) {\n this.list = new lunr.Vector.Node (idx, val, list)\n return this.length++\n }\n\n var prev = list,\n next = list.next\n\n while (next != undefined) {\n if (idx < next.idx) {\n prev.next = new lunr.Vector.Node (idx, val, next)\n return this.length++\n }\n\n prev = next, next = next.next\n }\n\n prev.next = new lunr.Vector.Node (idx, val, next)\n return this.length++\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n * @memberOf Vector\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n var node = this.list,\n sumOfSquares = 0,\n val\n\n while (node) {\n val = node.val\n sumOfSquares += val * val\n node = node.next\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector The vector to compute the dot product with.\n * @returns {Number}\n * @memberOf Vector\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var node = this.list,\n otherNode = otherVector.list,\n dotProduct = 0\n\n while (node && otherNode) {\n if (node.idx < otherNode.idx) {\n node = node.next\n } else if (node.idx > otherNode.idx) {\n otherNode = otherNode.next\n } else {\n dotProduct += node.val * otherNode.val\n node = node.next\n otherNode = otherNode.next\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the cosine similarity between this vector and another\n * vector.\n *\n * @param {lunr.Vector} otherVector The other vector to calculate the\n * similarity with.\n * @returns {Number}\n * @memberOf Vector\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / (this.magnitude() * otherVector.magnitude())\n}\n/*!\n * lunr.SortedSet\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.SortedSets are used to maintain an array of uniq values in a sorted\n * order.\n *\n * @constructor\n */\nlunr.SortedSet = function () {\n this.length = 0\n this.elements = []\n}\n\n/**\n * Loads a previously serialised sorted set.\n *\n * @param {Array} serialisedData The serialised set to load.\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\nlunr.SortedSet.load = function (serialisedData) {\n var set = new this\n\n set.elements = serialisedData\n set.length = serialisedData.length\n\n return set\n}\n\n/**\n * Inserts new items into the set in the correct position to maintain the\n * order.\n *\n * @param {Object} The objects to add to this set.\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.add = function () {\n var i, element\n\n for (i = 0; i < arguments.length; i++) {\n element = arguments[i]\n if (~this.indexOf(element)) continue\n this.elements.splice(this.locationFor(element), 0, element)\n }\n\n this.length = this.elements.length\n}\n\n/**\n * Converts this sorted set into an array.\n *\n * @returns {Array}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.toArray = function () {\n return this.elements.slice()\n}\n\n/**\n * Creates a new array with the results of calling a provided function on every\n * element in this sorted set.\n *\n * Delegates to Array.prototype.map and has the same signature.\n *\n * @param {Function} fn The function that is called on each element of the\n * set.\n * @param {Object} ctx An optional object that can be used as the context\n * for the function fn.\n * @returns {Array}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.map = function (fn, ctx) {\n return this.elements.map(fn, ctx)\n}\n\n/**\n * Executes a provided function once per sorted set element.\n *\n * Delegates to Array.prototype.forEach and has the same signature.\n *\n * @param {Function} fn The function that is called on each element of the\n * set.\n * @param {Object} ctx An optional object that can be used as the context\n * @memberOf SortedSet\n * for the function fn.\n */\nlunr.SortedSet.prototype.forEach = function (fn, ctx) {\n return this.elements.forEach(fn, ctx)\n}\n\n/**\n * Returns the index at which a given element can be found in the\n * sorted set, or -1 if it is not present.\n *\n * @param {Object} elem The object to locate in the sorted set.\n * @returns {Number}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.indexOf = function (elem) {\n var start = 0,\n end = this.elements.length,\n sectionLength = end - start,\n pivot = start + Math.floor(sectionLength / 2),\n pivotElem = this.elements[pivot]\n\n while (sectionLength > 1) {\n if (pivotElem === elem) return pivot\n\n if (pivotElem < elem) start = pivot\n if (pivotElem > elem) end = pivot\n\n sectionLength = end - start\n pivot = start + Math.floor(sectionLength / 2)\n pivotElem = this.elements[pivot]\n }\n\n if (pivotElem === elem) return pivot\n\n return -1\n}\n\n/**\n * Returns the position within the sorted set that an element should be\n * inserted at to maintain the current order of the set.\n *\n * This function assumes that the element to search for does not already exist\n * in the sorted set.\n *\n * @param {Object} elem The elem to find the position for in the set\n * @returns {Number}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.locationFor = function (elem) {\n var start = 0,\n end = this.elements.length,\n sectionLength = end - start,\n pivot = start + Math.floor(sectionLength / 2),\n pivotElem = this.elements[pivot]\n\n while (sectionLength > 1) {\n if (pivotElem < elem) start = pivot\n if (pivotElem > elem) end = pivot\n\n sectionLength = end - start\n pivot = start + Math.floor(sectionLength / 2)\n pivotElem = this.elements[pivot]\n }\n\n if (pivotElem > elem) return pivot\n if (pivotElem < elem) return pivot + 1\n}\n\n/**\n * Creates a new lunr.SortedSet that contains the elements in the intersection\n * of this set and the passed set.\n *\n * @param {lunr.SortedSet} otherSet The set to intersect with this set.\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.intersect = function (otherSet) {\n var intersectSet = new lunr.SortedSet,\n i = 0, j = 0,\n a_len = this.length, b_len = otherSet.length,\n a = this.elements, b = otherSet.elements\n\n while (true) {\n if (i > a_len - 1 || j > b_len - 1) break\n\n if (a[i] === b[j]) {\n intersectSet.add(a[i])\n i++, j++\n continue\n }\n\n if (a[i] < b[j]) {\n i++\n continue\n }\n\n if (a[i] > b[j]) {\n j++\n continue\n }\n };\n\n return intersectSet\n}\n\n/**\n * Makes a copy of this set\n *\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.clone = function () {\n var clone = new lunr.SortedSet\n\n clone.elements = this.toArray()\n clone.length = clone.elements.length\n\n return clone\n}\n\n/**\n * Creates a new lunr.SortedSet that contains the elements in the union\n * of this set and the passed set.\n *\n * @param {lunr.SortedSet} otherSet The set to union with this set.\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.union = function (otherSet) {\n var longSet, shortSet, unionSet\n\n if (this.length >= otherSet.length) {\n longSet = this, shortSet = otherSet\n } else {\n longSet = otherSet, shortSet = this\n }\n\n unionSet = longSet.clone()\n\n for(var i = 0, shortSetElements = shortSet.toArray(); i < shortSetElements.length; i++){\n unionSet.add(shortSetElements[i])\n }\n\n return unionSet\n}\n\n/**\n * Returns a representation of the sorted set ready for serialisation.\n *\n * @returns {Array}\n * @memberOf SortedSet\n */\nlunr.SortedSet.prototype.toJSON = function () {\n return this.toArray()\n}\n/*!\n * lunr.Index\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.Index is object that manages a search index. It contains the indexes\n * and stores all the tokens and document lookups. It also provides the main\n * user facing API for the library.\n *\n * @constructor\n */\nlunr.Index = function () {\n this._fields = []\n this._ref = 'id'\n this.pipeline = new lunr.Pipeline\n this.documentStore = new lunr.Store\n this.tokenStore = new lunr.TokenStore\n this.corpusTokens = new lunr.SortedSet\n this.eventEmitter = new lunr.EventEmitter\n this.tokenizerFn = lunr.tokenizer\n\n this._idfCache = {}\n\n this.on('add', 'remove', 'update', (function () {\n this._idfCache = {}\n }).bind(this))\n}\n\n/**\n * Bind a handler to events being emitted by the index.\n *\n * The handler can be bound to many events at the same time.\n *\n * @param {String} [eventName] The name(s) of events to bind the function to.\n * @param {Function} fn The serialised set to load.\n * @memberOf Index\n */\nlunr.Index.prototype.on = function () {\n var args = Array.prototype.slice.call(arguments)\n return this.eventEmitter.addListener.apply(this.eventEmitter, args)\n}\n\n/**\n * Removes a handler from an event being emitted by the index.\n *\n * @param {String} eventName The name of events to remove the function from.\n * @param {Function} fn The serialised set to load.\n * @memberOf Index\n */\nlunr.Index.prototype.off = function (name, fn) {\n return this.eventEmitter.removeListener(name, fn)\n}\n\n/**\n * Loads a previously serialised index.\n *\n * Issues a warning if the index being imported was serialised\n * by a different version of lunr.\n *\n * @param {Object} serialisedData The serialised set to load.\n * @returns {lunr.Index}\n * @memberOf Index\n */\nlunr.Index.load = function (serialisedData) {\n if (serialisedData.version !== lunr.version) {\n lunr.utils.warn('version mismatch: current ' + lunr.version + ' importing ' + serialisedData.version)\n }\n\n var idx = new this\n\n idx._fields = serialisedData.fields\n idx._ref = serialisedData.ref\n\n idx.tokenizer(lunr.tokenizer.load(serialisedData.tokenizer))\n idx.documentStore = lunr.Store.load(serialisedData.documentStore)\n idx.tokenStore = lunr.TokenStore.load(serialisedData.tokenStore)\n idx.corpusTokens = lunr.SortedSet.load(serialisedData.corpusTokens)\n idx.pipeline = lunr.Pipeline.load(serialisedData.pipeline)\n\n return idx\n}\n\n/**\n * Adds a field to the list of fields that will be searchable within documents\n * in the index.\n *\n * An optional boost param can be passed to affect how much tokens in this field\n * rank in search results, by default the boost value is 1.\n *\n * Fields should be added before any documents are added to the index, fields\n * that are added after documents are added to the index will only apply to new\n * documents added to the index.\n *\n * @param {String} fieldName The name of the field within the document that\n * should be indexed\n * @param {Number} boost An optional boost that can be applied to terms in this\n * field.\n * @returns {lunr.Index}\n * @memberOf Index\n */\nlunr.Index.prototype.field = function (fieldName, opts) {\n var opts = opts || {},\n field = { name: fieldName, boost: opts.boost || 1 }\n\n this._fields.push(field)\n return this\n}\n\n/**\n * Sets the property used to uniquely identify documents added to the index,\n * by default this property is 'id'.\n *\n * This should only be changed before adding documents to the index, changing\n * the ref property without resetting the index can lead to unexpected results.\n *\n * The value of ref can be of any type but it _must_ be stably comparable and\n * orderable.\n *\n * @param {String} refName The property to use to uniquely identify the\n * documents in the index.\n * @param {Boolean} emitEvent Whether to emit add events, defaults to true\n * @returns {lunr.Index}\n * @memberOf Index\n */\nlunr.Index.prototype.ref = function (refName) {\n this._ref = refName\n return this\n}\n\n/**\n * Sets the tokenizer used for this index.\n *\n * By default the index will use the default tokenizer, lunr.tokenizer. The tokenizer\n * should only be changed before adding documents to the index. Changing the tokenizer\n * without re-building the index can lead to unexpected results.\n *\n * @param {Function} fn The function to use as a tokenizer.\n * @returns {lunr.Index}\n * @memberOf Index\n */\nlunr.Index.prototype.tokenizer = function (fn) {\n var isRegistered = fn.label && (fn.label in lunr.tokenizer.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not a registered tokenizer. This may cause problems when serialising the index')\n }\n\n this.tokenizerFn = fn\n return this\n}\n\n/**\n * Add a document to the index.\n *\n * This is the way new documents enter the index, this function will run the\n * fields from the document through the index's pipeline and then add it to\n * the index, it will then show up in search results.\n *\n * An 'add' event is emitted with the document that has been added and the index\n * the document has been added to. This event can be silenced by passing false\n * as the second argument to add.\n *\n * @param {Object} doc The document to add to the index.\n * @param {Boolean} emitEvent Whether or not to emit events, default true.\n * @memberOf Index\n */\nlunr.Index.prototype.add = function (doc, emitEvent) {\n var docTokens = {},\n allDocumentTokens = new lunr.SortedSet,\n docRef = doc[this._ref],\n emitEvent = emitEvent === undefined ? true : emitEvent\n\n this._fields.forEach(function (field) {\n var fieldTokens = this.pipeline.run(this.tokenizerFn(doc[field.name]))\n\n docTokens[field.name] = fieldTokens\n\n for (var i = 0; i < fieldTokens.length; i++) {\n var token = fieldTokens[i]\n allDocumentTokens.add(token)\n this.corpusTokens.add(token)\n }\n }, this)\n\n this.documentStore.set(docRef, allDocumentTokens)\n\n for (var i = 0; i < allDocumentTokens.length; i++) {\n var token = allDocumentTokens.elements[i]\n var tf = 0;\n\n for (var j = 0; j < this._fields.length; j++){\n var field = this._fields[j]\n var fieldTokens = docTokens[field.name]\n var fieldLength = fieldTokens.length\n\n if (!fieldLength) continue\n\n var tokenCount = 0\n for (var k = 0; k < fieldLength; k++){\n if (fieldTokens[k] === token){\n tokenCount++\n }\n }\n\n tf += (tokenCount / fieldLength * field.boost)\n }\n\n this.tokenStore.add(token, { ref: docRef, tf: tf })\n };\n\n if (emitEvent) this.eventEmitter.emit('add', doc, this)\n}\n\n/**\n * Removes a document from the index.\n *\n * To make sure documents no longer show up in search results they can be\n * removed from the index using this method.\n *\n * The document passed only needs to have the same ref property value as the\n * document that was added to the index, they could be completely different\n * objects.\n *\n * A 'remove' event is emitted with the document that has been removed and the index\n * the document has been removed from. This event can be silenced by passing false\n * as the second argument to remove.\n *\n * @param {Object} doc The document to remove from the index.\n * @param {Boolean} emitEvent Whether to emit remove events, defaults to true\n * @memberOf Index\n */\nlunr.Index.prototype.remove = function (doc, emitEvent) {\n var docRef = doc[this._ref],\n emitEvent = emitEvent === undefined ? true : emitEvent\n\n if (!this.documentStore.has(docRef)) return\n\n var docTokens = this.documentStore.get(docRef)\n\n this.documentStore.remove(docRef)\n\n docTokens.forEach(function (token) {\n this.tokenStore.remove(token, docRef)\n }, this)\n\n if (emitEvent) this.eventEmitter.emit('remove', doc, this)\n}\n\n/**\n * Updates a document in the index.\n *\n * When a document contained within the index gets updated, fields changed,\n * added or removed, to make sure it correctly matched against search queries,\n * it should be updated in the index.\n *\n * This method is just a wrapper around `remove` and `add`\n *\n * An 'update' event is emitted with the document that has been updated and the index.\n * This event can be silenced by passing false as the second argument to update. Only\n * an update event will be fired, the 'add' and 'remove' events of the underlying calls\n * are silenced.\n *\n * @param {Object} doc The document to update in the index.\n * @param {Boolean} emitEvent Whether to emit update events, defaults to true\n * @see Index.prototype.remove\n * @see Index.prototype.add\n * @memberOf Index\n */\nlunr.Index.prototype.update = function (doc, emitEvent) {\n var emitEvent = emitEvent === undefined ? true : emitEvent\n\n this.remove(doc, false)\n this.add(doc, false)\n\n if (emitEvent) this.eventEmitter.emit('update', doc, this)\n}\n\n/**\n * Calculates the inverse document frequency for a token within the index.\n *\n * @param {String} token The token to calculate the idf of.\n * @see Index.prototype.idf\n * @private\n * @memberOf Index\n */\nlunr.Index.prototype.idf = function (term) {\n var cacheKey = \"@\" + term\n if (Object.prototype.hasOwnProperty.call(this._idfCache, cacheKey)) return this._idfCache[cacheKey]\n\n var documentFrequency = this.tokenStore.count(term),\n idf = 1\n\n if (documentFrequency > 0) {\n idf = 1 + Math.log(this.documentStore.length / documentFrequency)\n }\n\n return this._idfCache[cacheKey] = idf\n}\n\n/**\n * Searches the index using the passed query.\n *\n * Queries should be a string, multiple words are allowed and will lead to an\n * AND based query, e.g. `idx.search('foo bar')` will run a search for\n * documents containing both 'foo' and 'bar'.\n *\n * All query tokens are passed through the same pipeline that document tokens\n * are passed through, so any language processing involved will be run on every\n * query term.\n *\n * Each query term is expanded, so that the term 'he' might be expanded to\n * 'hello' and 'help' if those terms were already included in the index.\n *\n * Matching documents are returned as an array of objects, each object contains\n * the matching document ref, as set for this index, and the similarity score\n * for this document against the query.\n *\n * @param {String} query The query to search the index with.\n * @returns {Object}\n * @see Index.prototype.idf\n * @see Index.prototype.documentVector\n * @memberOf Index\n */\nlunr.Index.prototype.search = function (query) {\n var queryTokens = this.pipeline.run(this.tokenizerFn(query)),\n queryVector = new lunr.Vector,\n documentSets = [],\n fieldBoosts = this._fields.reduce(function (memo, f) { return memo + f.boost }, 0)\n\n var hasSomeToken = queryTokens.some(function (token) {\n return this.tokenStore.has(token)\n }, this)\n\n if (!hasSomeToken) return []\n\n queryTokens\n .forEach(function (token, i, tokens) {\n var tf = 1 / tokens.length * this._fields.length * fieldBoosts,\n self = this\n\n var set = this.tokenStore.expand(token).reduce(function (memo, key) {\n var pos = self.corpusTokens.indexOf(key),\n idf = self.idf(key),\n similarityBoost = 1,\n set = new lunr.SortedSet\n\n // if the expanded key is not an exact match to the token then\n // penalise the score for this key by how different the key is\n // to the token.\n if (key !== token) {\n var diff = Math.max(3, key.length - token.length)\n similarityBoost = 1 / Math.log(diff)\n }\n\n // calculate the query tf-idf score for this token\n // applying an similarityBoost to ensure exact matches\n // these rank higher than expanded terms\n if (pos > -1) queryVector.insert(pos, tf * idf * similarityBoost)\n\n // add all the documents that have this key into a set\n // ensuring that the type of key is preserved\n var matchingDocuments = self.tokenStore.get(key),\n refs = Object.keys(matchingDocuments),\n refsLen = refs.length\n\n for (var i = 0; i < refsLen; i++) {\n set.add(matchingDocuments[refs[i]].ref)\n }\n\n return memo.union(set)\n }, new lunr.SortedSet)\n\n documentSets.push(set)\n }, this)\n\n var documentSet = documentSets.reduce(function (memo, set) {\n return memo.intersect(set)\n })\n\n return documentSet\n .map(function (ref) {\n return { ref: ref, score: queryVector.similarity(this.documentVector(ref)) }\n }, this)\n .sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Generates a vector containing all the tokens in the document matching the\n * passed documentRef.\n *\n * The vector contains the tf-idf score for each token contained in the\n * document with the passed documentRef. The vector will contain an element\n * for every token in the indexes corpus, if the document does not contain that\n * token the element will be 0.\n *\n * @param {Object} documentRef The ref to find the document with.\n * @returns {lunr.Vector}\n * @private\n * @memberOf Index\n */\nlunr.Index.prototype.documentVector = function (documentRef) {\n var documentTokens = this.documentStore.get(documentRef),\n documentTokensLength = documentTokens.length,\n documentVector = new lunr.Vector\n\n for (var i = 0; i < documentTokensLength; i++) {\n var token = documentTokens.elements[i],\n tf = this.tokenStore.get(token)[documentRef].tf,\n idf = this.idf(token)\n\n documentVector.insert(this.corpusTokens.indexOf(token), tf * idf)\n };\n\n return documentVector\n}\n\n/**\n * Returns a representation of the index ready for serialisation.\n *\n * @returns {Object}\n * @memberOf Index\n */\nlunr.Index.prototype.toJSON = function () {\n return {\n version: lunr.version,\n fields: this._fields,\n ref: this._ref,\n tokenizer: this.tokenizerFn.label,\n documentStore: this.documentStore.toJSON(),\n tokenStore: this.tokenStore.toJSON(),\n corpusTokens: this.corpusTokens.toJSON(),\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Applies a plugin to the current index.\n *\n * A plugin is a function that is called with the index as its context.\n * Plugins can be used to customise or extend the behaviour the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied to the index.\n *\n * The plugin function will be called with the index as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index as its context.\n *\n * Example:\n *\n * var myPlugin = function (idx, arg1, arg2) {\n * // `this` is the index to be extended\n * // apply any extensions etc here.\n * }\n *\n * var idx = lunr(function () {\n * this.use(myPlugin, 'arg1', 'arg2')\n * })\n *\n * @param {Function} plugin The plugin to apply.\n * @memberOf Index\n */\nlunr.Index.prototype.use = function (plugin) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n plugin.apply(this, args)\n}\n/*!\n * lunr.Store\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.Store is a simple key-value store used for storing sets of tokens for\n * documents stored in index.\n *\n * @constructor\n * @module\n */\nlunr.Store = function () {\n this.store = {}\n this.length = 0\n}\n\n/**\n * Loads a previously serialised store\n *\n * @param {Object} serialisedData The serialised store to load.\n * @returns {lunr.Store}\n * @memberOf Store\n */\nlunr.Store.load = function (serialisedData) {\n var store = new this\n\n store.length = serialisedData.length\n store.store = Object.keys(serialisedData.store).reduce(function (memo, key) {\n memo[key] = lunr.SortedSet.load(serialisedData.store[key])\n return memo\n }, {})\n\n return store\n}\n\n/**\n * Stores the given tokens in the store against the given id.\n *\n * @param {Object} id The key used to store the tokens against.\n * @param {Object} tokens The tokens to store against the key.\n * @memberOf Store\n */\nlunr.Store.prototype.set = function (id, tokens) {\n if (!this.has(id)) this.length++\n this.store[id] = tokens\n}\n\n/**\n * Retrieves the tokens from the store for a given key.\n *\n * @param {Object} id The key to lookup and retrieve from the store.\n * @returns {Object}\n * @memberOf Store\n */\nlunr.Store.prototype.get = function (id) {\n return this.store[id]\n}\n\n/**\n * Checks whether the store contains a key.\n *\n * @param {Object} id The id to look up in the store.\n * @returns {Boolean}\n * @memberOf Store\n */\nlunr.Store.prototype.has = function (id) {\n return id in this.store\n}\n\n/**\n * Removes the value for a key in the store.\n *\n * @param {Object} id The id to remove from the store.\n * @memberOf Store\n */\nlunr.Store.prototype.remove = function (id) {\n if (!this.has(id)) return\n\n delete this.store[id]\n this.length--\n}\n\n/**\n * Returns a representation of the store ready for serialisation.\n *\n * @returns {Object}\n * @memberOf Store\n */\nlunr.Store.prototype.toJSON = function () {\n return {\n store: this.store,\n length: this.length\n }\n}\n\n/*!\n * lunr.stemmer\n * Copyright (C) 2017 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @module\n * @param {String} str The string to stem\n * @returns {String}\n * @see lunr.Pipeline\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return porterStemmer;\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @module\n * @param {Array} token The token to pass through the filter\n * @returns {Function}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token] !== token) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @module\n * @param {String} token The token to pass through the filter\n * @returns {String}\n * @see lunr.Pipeline\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2017 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the begining and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @module\n * @param {String} token The token to pass through the filter\n * @returns {String}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.replace(/^\\W+/, '').replace(/\\W+$/, '')\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.stemmer\n * Copyright (C) 2017 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.TokenStore is used for efficient storing and lookup of the reverse\n * index of token to document ref.\n *\n * @constructor\n */\nlunr.TokenStore = function () {\n this.root = { docs: {} }\n this.length = 0\n}\n\n/**\n * Loads a previously serialised token store\n *\n * @param {Object} serialisedData The serialised token store to load.\n * @returns {lunr.TokenStore}\n * @memberOf TokenStore\n */\nlunr.TokenStore.load = function (serialisedData) {\n var store = new this\n\n store.root = serialisedData.root\n store.length = serialisedData.length\n\n return store\n}\n\n/**\n * Adds a new token doc pair to the store.\n *\n * By default this function starts at the root of the current store, however\n * it can start at any node of any token store if required.\n *\n * @param {String} token The token to store the doc under\n * @param {Object} doc The doc to store against the token\n * @param {Object} root An optional node at which to start looking for the\n * correct place to enter the doc, by default the root of this lunr.TokenStore\n * is used.\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.add = function (token, doc, root) {\n var root = root || this.root,\n key = token.charAt(0),\n rest = token.slice(1)\n\n if (!(key in root)) root[key] = {docs: {}}\n\n if (rest.length === 0) {\n root[key].docs[doc.ref] = doc\n this.length += 1\n return\n } else {\n return this.add(rest, doc, root[key])\n }\n}\n\n/**\n * Checks whether this key is contained within this lunr.TokenStore.\n *\n * By default this function starts at the root of the current store, however\n * it can start at any node of any token store if required.\n *\n * @param {String} token The token to check for\n * @param {Object} root An optional node at which to start\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.has = function (token) {\n if (!token) return false\n\n var node = this.root\n\n for (var i = 0; i < token.length; i++) {\n if (!node[token.charAt(i)]) return false\n\n node = node[token.charAt(i)]\n }\n\n return true\n}\n\n/**\n * Retrieve a node from the token store for a given token.\n *\n * By default this function starts at the root of the current store, however\n * it can start at any node of any token store if required.\n *\n * @param {String} token The token to get the node for.\n * @param {Object} root An optional node at which to start.\n * @returns {Object}\n * @see TokenStore.prototype.get\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.getNode = function (token) {\n if (!token) return {}\n\n var node = this.root\n\n for (var i = 0; i < token.length; i++) {\n if (!node[token.charAt(i)]) return {}\n\n node = node[token.charAt(i)]\n }\n\n return node\n}\n\n/**\n * Retrieve the documents for a node for the given token.\n *\n * By default this function starts at the root of the current store, however\n * it can start at any node of any token store if required.\n *\n * @param {String} token The token to get the documents for.\n * @param {Object} root An optional node at which to start.\n * @returns {Object}\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.get = function (token, root) {\n return this.getNode(token, root).docs || {}\n}\n\nlunr.TokenStore.prototype.count = function (token, root) {\n return Object.keys(this.get(token, root)).length\n}\n\n/**\n * Remove the document identified by ref from the token in the store.\n *\n * By default this function starts at the root of the current store, however\n * it can start at any node of any token store if required.\n *\n * @param {String} token The token to get the documents for.\n * @param {String} ref The ref of the document to remove from this token.\n * @param {Object} root An optional node at which to start.\n * @returns {Object}\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.remove = function (token, ref) {\n if (!token) return\n var node = this.root\n\n for (var i = 0; i < token.length; i++) {\n if (!(token.charAt(i) in node)) return\n node = node[token.charAt(i)]\n }\n\n delete node.docs[ref]\n}\n\n/**\n * Find all the possible suffixes of the passed token using tokens\n * currently in the store.\n *\n * @param {String} token The token to expand.\n * @returns {Array}\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.expand = function (token, memo) {\n var root = this.getNode(token),\n docs = root.docs || {},\n memo = memo || []\n\n if (Object.keys(docs).length) memo.push(token)\n\n Object.keys(root)\n .forEach(function (key) {\n if (key === 'docs') return\n\n memo.concat(this.expand(token + key, memo))\n }, this)\n\n return memo\n}\n\n/**\n * Returns a representation of the token store ready for serialisation.\n *\n * @returns {Object}\n * @memberOf TokenStore\n */\nlunr.TokenStore.prototype.toJSON = function () {\n return {\n root: this.root,\n length: this.length\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n","\"use strict\";\n\nvar _ = require('./../vendor/lodash');\n\nvar lunr = require('lunr');\n/**\n * responsible for making full text searching on items\n * config provide only searchableFields\n */\n\n\nvar Fulltext = function Fulltext(items, config) {\n var _this = this;\n\n config = config || {};\n config.searchableFields = config.searchableFields || [];\n this.items = items; // creating index\n\n this.idx = lunr(function () {\n // currently schema hardcoded\n this.field('name', {\n boost: 10\n });\n var self = this;\n\n _.forEach(config.searchableFields, function (field) {\n self.field(field);\n });\n\n this.ref('id');\n }); //var items2 = _.clone(items)\n\n var i = 1;\n\n _.map(items, function (doc) {\n if (!doc.id) {\n doc.id = i;\n ++i;\n }\n\n _this.idx.add(doc);\n });\n\n this.store = _.mapKeys(items, function (doc) {\n return doc.id;\n });\n};\n\nFulltext.prototype = {\n search: function search(query) {\n var _this2 = this;\n\n if (!query) {\n return this.items;\n }\n\n return _.map(this.idx.search(query), function (val) {\n var item = _this2.store[val.ref]; //delete item.id;\n\n return item;\n });\n }\n};\nmodule.exports = Fulltext;","\"use strict\";\n\nvar _ = require('./../vendor/lodash');\n\nvar helpers = require('./helpers');\n\nvar Fulltext = require('./fulltext');\n/**\n * search by filters\n */\n\n\nmodule.exports.search = function (items, input, configuration, fulltext) {\n input = input || {};\n var search_time = 0; // make search by query first\n\n if (fulltext) {\n var search_start_time = new Date().getTime();\n items = fulltext.search(input.query);\n search_time = new Date().getTime() - search_start_time;\n }\n /**\n * making a items filtering after search and before faceting\n * after search because search is very fast (faster than O(n) while filtering is O(n) and faceting is like O(n x m))\n * the goal is to make a library more customizable for developers\n */\n\n\n if (input.filter instanceof Function) {\n items = items.filter(input.filter);\n } // @deprecated\n\n\n if (input.prefilter instanceof Function) {\n items = input.prefilter(items);\n }\n /**\n * responsible for filtering items by aggregation values (processed input)\n * not sure now about the reason but probably performance\n */\n\n\n var filtered_items = module.exports.items_by_aggregations(items, input.aggregations);\n var per_page = input.per_page || 12;\n var page = input.page || 1;\n /**\n * sorting items\n */\n\n var sorting_time = 0;\n\n if (input.sort) {\n var sorting_start_time = new Date().getTime();\n filtered_items = module.exports.sorted_items(filtered_items, input.sort, configuration.sortings);\n sorting_time = new Date().getTime() - sorting_start_time;\n }\n /**\n * calculating facets\n */\n\n\n var facets_start_time = new Date().getTime();\n var aggregations = module.exports.aggregations(items, input.aggregations);\n var facets_time = new Date().getTime() - facets_start_time;\n return {\n pagination: {\n per_page: per_page,\n page: page,\n total: filtered_items.length\n },\n timings: {\n facets: facets_time,\n search: search_time,\n sorting: sorting_time\n },\n data: {\n items: filtered_items.slice((page - 1) * per_page, page * per_page),\n aggregations: aggregations\n }\n };\n};\n/**\n * returns list of elements in aggregation\n * useful for autocomplete or list all aggregation options\n */\n\n\nmodule.exports.aggregation = function (items, input, aggregations) {\n var per_page = input.per_page || 10;\n var page = input.page || 1;\n\n if (input.name && (!aggregations || !aggregations[input.name])) {\n throw new Error(\"Please define aggregation \\\"\".concat(input.name, \"\\\" in config\"));\n }\n\n var buckets = module.exports.buckets(items, input.name, aggregations[input.name], aggregations);\n\n if (input.query) {\n buckets = _.filter(buckets, function (val) {\n // responsible for query\n // counterpart to startsWith\n return val.key.toLowerCase().indexOf(input.query.toLowerCase()) === 0;\n });\n }\n\n return {\n pagination: {\n per_page: per_page,\n page: page,\n total: buckets.length\n },\n data: {\n buckets: buckets.slice((page - 1) * per_page, page * per_page)\n }\n };\n};\n/**\n * return items by sort\n */\n\n\nmodule.exports.sorted_items = function (items, sort, sortings) {\n if (sortings && sortings[sort]) {\n sort = sortings[sort];\n }\n\n if (sort.field) {\n return _.orderBy(items, sort.field, sort.order || 'asc');\n }\n\n return items;\n};\n/**\n * return items which pass filters (aggregations)\n */\n\n\nmodule.exports.items_by_aggregations = function (items, aggregations) {\n return _.filter(items, function (item) {\n return module.exports.filterable_item(item, aggregations);\n });\n};\n/**\n * it returns list of aggregations with buckets\n * it calculates based on object filters like {tags: ['drama', '1980s']} against list of items\n * in realtime\n *\n * @TODO\n * consider caching aggregations results in startup time\n */\n\n\nmodule.exports.aggregations = function (items, aggregations) {\n var position = 0;\n return _.mapValues(aggregations, function (val, key) {\n // key is a 'tags' and val is ['drama', '1980s']\n ++position;\n return {\n name: key,\n title: val.title || key.charAt(0).toUpperCase() + key.slice(1),\n position: position,\n buckets: module.exports.buckets(items, key, val, aggregations).slice(0, val.size || 10)\n };\n });\n};\n/**\n * checks if item is passing aggregations - if it's filtered or not\n * @TODO should accept filters (user input) as the parameter\n * and not user params merged with global config\n * should be is_filterable_item\n */\n\n\nmodule.exports.filterable_item = function (item, aggregations) {\n var keys = _.keys(aggregations);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (helpers.is_empty_agg(aggregations[key])) {\n if (helpers.check_empty_field(item[aggregations[key].field], aggregations[key].filters)) {\n continue;\n }\n\n return false;\n } else if (helpers.is_not_filters_agg(aggregations[key]) && !helpers.not_filters_field(item[key], aggregations[key].not_filters)) {\n return false;\n } else if (helpers.is_disjunctive_agg(aggregations[key]) && !helpers.disjunctive_field(item[key], aggregations[key].filters)) {\n return false;\n } else if (helpers.is_conjunctive_agg(aggregations[key]) && !helpers.conjunctive_field(item[key], aggregations[key].filters)) {\n return false;\n }\n }\n\n return true;\n};\n/*\n * returns array of item key values only if they are passing aggregations criteria\n */\n\n\nmodule.exports.bucket_field = function (item, aggregations, key) {\n var keys = _.keys(aggregations);\n /**\n * responsible for narrowing facets with not_filter filter\n */\n\n\n for (var i = 0; i < keys.length; ++i) {\n var it = keys[i];\n\n if (helpers.is_not_filters_agg(aggregations[it])) {\n if (!helpers.not_filters_field(item[it], aggregations[it].not_filters)) {\n return [];\n }\n }\n }\n\n for (var i = 0; i < keys.length; ++i) {\n if (keys[i] === key) {\n continue;\n }\n\n var it = keys[i];\n\n if (helpers.is_empty_agg(aggregations[it])) {\n if (!helpers.check_empty_field(item[aggregations[it].field], aggregations[it].filters)) {\n return [];\n } else {\n continue;\n }\n } else if (helpers.is_disjunctive_agg(aggregations[it]) && !helpers.disjunctive_field(item[it], aggregations[it].filters)) {\n return [];\n } else if (helpers.is_conjunctive_agg(aggregations[it]) && !helpers.conjunctive_field(item[it], aggregations[it].filters)) {\n return [];\n }\n }\n\n if (helpers.is_empty_agg(aggregations[key])) {\n var temp = helpers.check_empty_field(item[aggregations[key].field], aggregations[key].filters);\n\n if (temp) {\n return temp;\n }\n\n return [];\n }\n\n if (helpers.is_disjunctive_agg(aggregations[key]) || helpers.includes(item[key], aggregations[key].filters)) {\n return item[key] ? _.flatten([item[key]]) : [];\n }\n\n return [];\n};\n/*\n * fields count for one item based on aggregation options\n * returns buckets objects\n */\n\n\nmodule.exports.bucket = function (item, aggregations) {\n return _.mapValues(aggregations, function (val, key) {\n return module.exports.bucket_field(item, aggregations, key);\n });\n};\n/**\n * returns buckets list for items for specific key and aggregation configuration\n *\n * @TODO it should be more lower level and should not be dependent directly on user configuration\n * should be able to sort buckets alphabetically, by count and by asc or desc\n */\n\n\nmodule.exports.buckets = function (items, field, agg, aggregations) {\n var buckets = _.transform(items, function (result, item) {\n item = module.exports.bucket(item, aggregations);\n var elements = item[field];\n\n if (agg.conjunction !== false && helpers.includes(elements, agg.filters) //|| agg.conjunction === false && helpers.includes_any(elements, agg.filters)\n || agg.conjunction === false) {\n // go through elements in item field\n for (var i = 0; elements && i < elements.length; ++i) {\n var key = elements[i];\n\n if (!result[key]) {\n result[key] = 1;\n } else {\n result[key] += 1;\n }\n }\n }\n }, {}); // transform object of objects to array of objects\n\n\n buckets = _.map(buckets, function (val, key) {\n return {\n key: key,\n doc_count: val\n };\n });\n\n if (agg.sort === 'term') {\n buckets = _.orderBy(buckets, ['key'], [agg.order || 'asc']);\n } else {\n buckets = _.orderBy(buckets, ['doc_count', 'key'], [agg.order || 'desc', 'asc']);\n }\n\n return buckets;\n};\n/**\n * returns list of elements in aggregation\n * useful for autocomplete or list all aggregation options\n */\n\n\nmodule.exports.similar = function (items, id, options) {\n var result = [];\n var per_page = options.per_page || 10;\n var minimum = options.minimum || 0;\n var page = options.page || 1;\n var item;\n\n for (var i = 0; i < items.length; ++i) {\n if (items[i].id == id) {\n item = items[i];\n break;\n }\n }\n\n if (!options.field) {\n throw new Error(\"Please define field in options\");\n }\n\n var field = options.field;\n var sorted_items = [];\n\n for (var i = 0; i < items.length; ++i) {\n if (items[i].id !== id) {\n var intersection = _.intersection(item[field], items[i][field]);\n\n if (intersection.length >= minimum) {\n sorted_items.push(items[i]);\n sorted_items[sorted_items.length - 1].intersection_length = intersection.length;\n }\n }\n }\n\n sorted_items = _.orderBy(sorted_items, ['intersection_length'], ['desc']);\n return {\n pagination: {\n per_page: per_page,\n page: page,\n total: sorted_items.length\n },\n data: {\n items: sorted_items.slice((page - 1) * per_page, page * per_page)\n }\n };\n};","\"use strict\";\n\nvar service = require('./lib');\n\nvar _ = require('./../vendor/lodash');\n\nvar helpers = require('./helpers');\n\nvar Fulltext = require('./fulltext');\n\nmodule.exports = function itemsjs(items, configuration) {\n configuration = configuration || {}; // responsible for full text search over the items\n // it makes inverted index and it is very fast\n\n var fulltext = new Fulltext(items, configuration);\n return {\n /**\n * per_page\n * page\n * query\n * sort\n * filters\n */\n search: function search(input) {\n input = input || {};\n /**\n * merge configuration aggregation with user input\n */\n\n input.aggregations = helpers.mergeAggregations(configuration.aggregations, input);\n return service.search(items, input, configuration, fulltext);\n },\n\n /**\n * returns list of similar elements to specified item id\n * id\n */\n similar: function similar(id, options) {\n return service.similar(items, id, options);\n },\n\n /**\n * returns list of elements for specific aggregation i.e. list of tags\n * name (aggregation name)\n * query\n * per_page\n * page\n */\n aggregation: function aggregation(input) {\n return service.aggregation(items, input, configuration.aggregations);\n },\n\n /**\n * reindex items\n * reinitialize fulltext search\n */\n reindex: function reindex(newItems) {\n items = newItems;\n fulltext = new Fulltext(items, configuration);\n }\n };\n};","<template>\n <div class=\"mb-8\">\n <div v-if=\"facet.buckets.length != 0\">\n <h5 class=\"text-lg font-bold block mb-3\">{{ facet.title }}</h5>\n </div>\n <!-- this is a WIP solution to test different facet template (checkboxes vs select) \n As of now, only checkboxes work-->\n <div v-if=\"template === 'checkboxes'\">\n <div class=\"checkbox block mb-2\" v-for=\"bucket in facet.buckets\" :key=\"bucket.key\">\n <label class=\"mb-1 inline-block text-grey-darker font-sans text-base\">\n <input\n class=\"mr-1 leading-tight\"\n type=\"checkbox\"\n v-model=\"filters[facet.name]\"\n :value=\"bucket.key\"\n >\n \n <!-- Each checkbox is modeled after a facet -->\n {{ bucket.key }}\n <span class=\"text-xs\">({{ bucket.doc_count }})</span>\n </label>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: [\"facet\", \"filters\"],\n data() {\n // We populate the template firld for WIP solution mentioned above.\n return {\n template: \"checkboxes\"\n };\n }\n};\n</script>","import Vue from 'vue';\n\nVue.filter(\"slugify\", function(value) {\n\tvalue = value.replace(/^\\s+|\\s+$/g, \"\"); // trim\n\tvalue = value.toLowerCase();\n\n\t// remove accents, swap ñ for n, etc\n\tvar from = \"ãàáäâẽèéëêìíïîõòóöôùúüûñç·/_,:;\";\n\tvar to = \"aaaaaeeeeeiiiiooooouuuunc------\";\n\tfor (var i = 0, l = from.length; i < l; i++) {\n\t\tvalue = value.replace(new RegExp(from.charAt(i), \"g\"), to.charAt(i));\n\t}\n\n\tvalue = value\n\t\t.replace(/[^a-z0-9 -]/g, \"\") // remove invalid chars\n\t\t.replace(/\\s+/g, \"-\") // collapse whitespace and replace by -\n\t\t.replace(/-+/g, \"-\"); // collapse dashes\n\n\treturn value;\n});\n","<template>\n <a v-bind:href=\"item.uri\" class=\"block no-underline text-black hover:opacity-90\">\n <div\n v-for=\"category in item.category\"\n :text=\"category.text\"\n :key=\"category.id\"\n :class=\"category | slugify\"\n >\n <div class=\"text-xs main-category px-4 py-2\">\n <!-- <div v-if=\"index === 0\">{{ category | slugify }}</div> flex justify-between px-3 py-1 text-xs text-white-->\n <span class=\"text-sm main-category\">{{ category }}</span>\n </div>\n </div>\n\n <div class=\"p-3\">\n <div class=\"title bold text-lg text-grey-darkest\">{{ item.title }}</div>\n <div v-if=\"item.description != null\">\n <div\n class=\"description nested-links text-grey-darker text-sm no-underline leading-normal nested-copy-line-height\"\n >{{ item.description }}</div>\n </div>\n </div>\n </a>\n</template>\n\n<script>\nimport \"../filters/slugify.js\";\nexport default {\n props: [\"item\"]\n};\n</script>\n\n\n","var config = {\n\tsearchableFields: [\"title\", \"tags\"],\n\tsortings: {\n\t\tname_asc: {\n field: \"title\",\n order: \"asc\"\n }\n\t},\n\taggregations: {\n\t\ttool_type: {\n\t\t\ttitle: \"Type\",\n\t\t\tconjunction: true,\n\t\t sort: \"term\",\n\t\t\torder: \"asc\",\n\t\t\tsize: 2000\n },\n data_model: {\t\t\t\n\t\t\ttitle: \"Data Model (for CMSs)\",\n\t\t\tconjunction: false,\n\t\t sort: \"title\",\n\t\t\torder: \"desc\",\n\t\t\tsize: 2000\n }, \n language: {\t\t\t\n\t\t\tconjunction: false,\n\t\t sort: \"term\",\n\t\t\torder: \"asc\",\n\t\t\tsize: 2000\n },\n tags: {\n\t\t\ttitle: \"Tags\",\n\t\t\tconjunction: false,\n\t\t sort: \"term\",\n\t\t\torder: \"asc\",\n\t\t\tsize: 2000\n },\n license: {\n\t\t\ttitle: \"License\",\n\t\t\tconjunction: false,\n\t\t sort: \"title\",\n\t\t\torder: \"asc\",\n\t\t\tsize: 2000\n },\n \n \n\n\t}\n};\n\nexport default config;\n","<template>\n <!-- Following classes conditions allow styling loading etc.. -->\n <div class=\"to-load\" :class=\"{ 'is-loading': loading, 'done-loading': !loading }\">\n <!-- Search ROW -->\n <div class=\"relative mr-16 my-8\">\n <input\n aria-describedby=\"name-desc\"\n type=\"search\"\n v-model=\"query\"\n class=\"bg-purple-white shadow w-full rounded border-0 py-3 pl-12 pr-4\"\n placeholder=\"Search by name...\"\n >\n <div class=\"absolute pin-l pin-t mt-3 ml-4 text-purple-lighter\">\n <svg\n version=\"1.1\"\n class=\"h-4 text-dark\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 52.966 52.966\"\n style=\"enable-background:new 0 0 52.966 52.966;\"\n xml:space=\"preserve\"\n >\n <path\n d=\"M51.704,51.273L36.845,35.82c3.79-3.801,6.138-9.041,6.138-14.82c0-11.58-9.42-21-21-21s-21,9.42-21,21s9.42,21,21,21\n c5.083,0,9.748-1.817,13.384-4.832l14.895,15.491c0.196,0.205,0.458,0.307,0.721,0.307c0.25,0,0.499-0.093,0.693-0.279\n C52.074,52.304,52.086,51.671,51.704,51.273z M21.983,40c-10.477,0-19-8.523-19-19s8.523-19,19-19s19,8.523,19,19\n S32.459,40,21.983,40z\"\n ></path>\n </svg>\n </div>\n </div>\n\n <div class=\"sm:grid grid-columns-8 grid-gap-4\">\n <div class=\"facets col-span-2 bg-white shadow py-8 px-4\">\n <!-- itemJS returns an object containing facets and items.\n We here loop through aggregation and load a facet vue component for each-->\n <div v-for=\"facet in searchResult.data.aggregations\" :key=\"facet.id\">\n <facet :facet=\"facet\" :filters=\"filters\"></facet>\n </div>\n </div>\n\n <div class=\"results col-span-6\">\n <div class=\"sm:grid grid-columns-2 lg:grid-columns-3 grid-gap-4 xl:grid-columns-4\">\n <div\n v-for=\"item in searchResult.data.items\"\n :key=\"item.id\"\n class=\"bg-white col-span-1 h-full mb-4 shadow hover:shadow-lg\"\n >\n <!-- itemJS returns an object containing facets and items.\n We here loop through results and load a facet plan component for each-->\n <tool :item=\"item\"></tool>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nlet itemsJS = require(\"itemsjs\");\nimport facet from \"./components/facet.vue\";\nimport tool from \"./components/tool.vue\";\n\nimport config from \"./filters.config.js\";\n\nexport default {\n components: {\n facet,\n tool\n },\n name: \"app\",\n data: function() {\n // Configuration has been loaded from ../configuration.js\n let configuration = config;\n // We generate the filters from the configuration\n var filters = {};\n Object.keys(configuration.aggregations).map(function(v) {\n filters[v] = [];\n });\n return {\n loading: true,\n configuration: configuration,\n // Query is the current value of text search input\n query: \"\",\n // We must populate the following with emtpty values, so the App can start without the\n // JSON endpoint fetched. There is no way for the computed method to wait for data to be fetched.\n items: {},\n searchResults: {\n data: {\n items: {},\n aggregations: {}\n }\n },\n // initializing filters with empty arrays\n filters: filters\n };\n },\n mounted: function() {\n fetch(\"../tool/index.json\") // Call the fetch function passing the url of the API as a parameter\n .then(resp => {\n return resp.json(); // json response is turned into an object\n })\n .then(data => {\n // We populate the items variable of the app with the itemJS object built from config and json\n this.items = itemsJS(data.data.items, this.configuration);\n console.log(data);\n })\n .catch(function(error) {\n console.log(error);\n })\n .finally(() => (this.loading = false));\n },\n methods: {\n // Reset method is not used yet.\n reset: function() {\n let filters = {};\n Object.keys(configuration.aggregations).map(function(v) {\n filters[v] = [];\n });\n\n this.filters = filters;\n this.query = \"\";\n }\n },\n computed: {\n // Computed method must start witha an emptuy object.\n searchResult: function() {\n let result = {\n data: {\n items: {}\n }\n };\n console.log(\"Search Results\", this.items.search);\n // It updates when items.search is available (after json endpoint is fetched and interpreted)\n if (typeof this.items.search != \"undefined\") {\n result = this.items.search({\n per_page: 500,\n sort: \"name_asc\",\n query: this.query,\n filters: this.filters\n });\n }\n return result;\n }\n }\n};\n\n// let params = (new URL(document.location)).searchParams;\n// let name = params.get('name'); // is the string \"Jonathan Smith\".\n// let age = parseInt(params.get('age')); // is the number 18\n\n// console.log(\"param\", age)\n</script>\n\n<style lang=\"scss\" scoped>\n.to-load {\n min-height: 70vh;\n opacity: 0.2;\n transition: opacity 300ms;\n &.done-loading {\n min-height: 0;\n opacity: 1;\n }\n}\n</style>","\n\n// To use https://github.com/KyleAMathews/typefaces\nimport \"typeface-nunito\";\nimport \"./css/styles.css\";\n\nimport \"./js/polyfills.js\"; //MUST GO AT TOP\nimport \"./js/lazysizes.js\";\nimport \"./js/quicklink.js\";\nimport \"./js/nojs.js\";\n\nimport Vue from \"vue\";\nimport App from \"./js/app/filters.vue\";\n\n// FILTERS APP\nif (document.getElementById(\"app\")) { \n\n\tnew Vue({\n\t\tel: \"#app\",\n\t\tcomponents: { App }\n\t});\n} \nconsole.log(\"NODE_ENV=\", process.env.NODE_ENV);\n"]}