vendor.js 203 KB
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/vendor"],{

/***/ "./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue-page-factory/index.js":
/*!****************************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue-page-factory/index.js ***!
  \****************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue/index.js\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction callHook$1(vm, hook, params) {\n  var handlers = vm.$options[hook];\n  if (hook === 'onError' && handlers) {\n    handlers = [handlers];\n  }\n  if(typeof handlers === 'function'){\n    handlers = [handlers]\n  }\n\n  var ret;\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n//      try {\n        ret = handlers[i].call(vm, params);\n//       } catch (e) {//fixed by xxxxxx\n//         handleError(e, vm, (hook + \" hook\"));\n//       }\n    }\n  }\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n\n  // for child\n  if (vm.$children.length) {\n    vm.$children.forEach(function (v) {\n      return callHook$1(v, hook, params);\n    });\n  }\n\n  return ret\n}\n\nfunction getRootVueVm(page) {\n  return page.$vm.$root;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (App) {\n  return {\n    // 页面的初始数据\n    data: {\n      $root: {}\n    },\n\n    // mp lifecycle for vue\n    // 生命周期函数--监听页面加载\n    onLoad:function onLoad(query) {\n      //页面加载的时候\n      var app = new vue__WEBPACK_IMPORTED_MODULE_0___default.a(App);\n      // 挂载Vue对象到page上\n      this.$vm = app;\n      var rootVueVM = app.$root;\n      rootVueVM.__wxWebviewId__ = this.__wxWebviewId__//fixed by xxxxxx(createIntersectionObserver)\r\n      \n      //初始化mp对象\n      if (!rootVueVM.$mp) {\n        rootVueVM.$mp = {};\n      }\n      var mp = rootVueVM.$mp;\n      mp.mpType = 'page';\n      mp.page = this;\n      mp.query = query;\n      mp.status = 'load';\n      //mount 要在 mp.status = 'load';赋值之后,不然mount方法会重复添加微信Page\n      //具体原因参考mpvue核心库源码,_initMP方法\n      app.$mount();\n    },\n\n    handleProxy: function handleProxy(e) {\n      var rootVueVM = getRootVueVm(this);\n      return rootVueVM.$handleProxyWithVue(e)\n    },\n\n    // 生命周期函数--监听页面显示\n    onShow:function onShow() {\n      var rootVueVM = getRootVueVm(this);\n      var mp = rootVueVM.$mp;\n      mp.status = 'show';\n      callHook$1(rootVueVM, 'onShow');\n      //   // 只有页面需要 setData\n      rootVueVM.$nextTick(function () {\n        rootVueVM._initDataToMP();\n      });\n    },\n\n    // 生命周期函数--监听页面初次渲染完成\n    onReady:function onReady() {\n      var rootVueVM = getRootVueVm(this);\n      var mp = rootVueVM.$mp;\n      mp.status = 'ready';\n      callHook$1(rootVueVM, 'onReady');\n    },\n\n    // 生命周期函数--监听页面隐藏\n    onHide: function onHide() {\n      var rootVueVM = getRootVueVm(this);\n      var mp = rootVueVM.$mp;\n      mp.status = 'hide';\n      callHook$1(rootVueVM, 'onHide');\n    },\n\n    // 生命周期函数--监听页面卸载\n    onUnload: function onUnload() {\n      var rootVueVM = getRootVueVm(this);\n      callHook$1(rootVueVM, 'onUnload');\n      rootVueVM.$destroy();\n    },\n\n    // 页面相关事件处理函数--监听用户下拉动作\n    onPullDownRefresh: function onPullDownRefresh() {\n      var rootVueVM = getRootVueVm(this);\n      callHook$1(rootVueVM, 'onPullDownRefresh');\n    },\n\n    // 页面上拉触底事件的处理函数\n    onReachBottom: function onReachBottom() {\n      var rootVueVM = getRootVueVm(this);\n      callHook$1(rootVueVM, 'onReachBottom');\n    },\n\n    // Do something when page scroll\n    onPageScroll: function onPageScroll(options) {\n      var rootVueVM = getRootVueVm(this);\n      callHook$1(rootVueVM, 'onPageScroll', options);\n    },\n\n    // 当前是 tab 页时,点击 tab 时触发\n    onTabItemTap: function onTabItemTap(options) {\n      var rootVueVM = getRootVueVm(this);\n      callHook$1(rootVueVM, 'onTabItemTap', options);\n    },\r\n\t\t\n    // // 用户点击右上角分享\n    onShareAppMessage: App.onShareAppMessage ?\n      function (options) {\n        var rootVueVM = getRootVueVm(this);\n        return callHook$1(rootVueVM, 'onShareAppMessage', options);\n      } : null,\n\n    //fixed by xxxxxx\n    onNavigationBarButtonTap: function onNavigationBarButtonTap(options) {\n        var rootVueVM = getRootVueVm(this);\n    \t\tcallHook$1(rootVueVM, \"onNavigationBarButtonTap\", options)\n    },\n    onNavigationBarSearchInputChanged: function onNavigationBarSearchInputChanged(options) {\n        var rootVueVM = getRootVueVm(this);\n    \t\tcallHook$1(rootVueVM, \"onNavigationBarSearchInputChanged\", options)\n    },\n    onNavigationBarSearchInputConfirmed: function onNavigationBarSearchInputConfirmed(options) {\n        var rootVueVM = getRootVueVm(this);\n    \t\tcallHook$1(rootVueVM, \"onNavigationBarSearchInputConfirmed\", options)\n    },\n    onNavigationBarSearchInputClicked: function onNavigationBarSearchInputClicked(options) {\n        var rootVueVM = getRootVueVm(this);\n    \t\tcallHook$1(rootVueVM, \"onNavigationBarSearchInputClicked\", options)\n    },\n    onBackPress: function onBackPress(options) {\n        var rootVueVM = getRootVueVm(this);\n    \t\treturn callHook$1(rootVueVM, \"onBackPress\",options)\n    },\r\n\t\t$getAppWebview:function (e) {\r\n\t\t\t\treturn plus.webview.getWebviewById('' + this.__wxWebviewId__)\r\n\t\t}\n  };\n});\n\n\n//# sourceURL=D:/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue-page-factory/index.js");

/***/ }),

/***/ "./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue/index.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue/index.js ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global) {// fix env\r\ntry {\r\n    if (!global) global = {}\r\n    global.process = global.process || {}\r\n    global.process.env = global.process.env || {}\r\n    global.App = global.App || App\r\n    global.Page = global.Page || Page\r\n    global.Component = global.Component || Component\r\n    global.getApp = global.getApp || getApp\r\n} catch (e) {}\r\n\r\n;(function(global, factory) {\r\n     true\r\n        ? (module.exports = factory())\r\n        : undefined\r\n})(this, function() {\r\n    \"use strict\"\r\n\r\n    //fixed by xxxxxx\r\n    function calcDiff(holder, key, newObj, oldObj) {\r\n        if (newObj === oldObj || newObj === undefined) {\r\n            return\r\n        }\r\n\r\n        if (newObj == null || oldObj == null || typeof newObj !== typeof oldObj) {\r\n            holder[key] = newObj\r\n        } else if (Array.isArray(newObj) && Array.isArray(oldObj)) {\r\n            if (newObj.length === oldObj.length) {\r\n                for (var i = 0, len = newObj.length; i < len; ++i) {\r\n                    calcDiff(holder, key + \"[\" + i + \"]\", newObj[i], oldObj[i])\r\n                }\r\n            } else {\r\n                holder[key] = newObj\r\n            }\r\n        } else if (typeof newObj === \"object\" && typeof oldObj === \"object\") {\r\n            var newKeys = Object.keys(newObj)\r\n            var oldKeys = Object.keys(oldObj)\r\n\r\n            if (newKeys.length !== oldKeys.length) {\r\n                holder[key] = newObj\r\n            } else {\r\n                var allKeysSet = Object.create(null)\r\n                for (var i = 0, len = newKeys.length; i < len; ++i) {\r\n                    allKeysSet[newKeys[i]] = true\r\n                    allKeysSet[oldKeys[i]] = true\r\n                }\r\n                if (Object.keys(allKeysSet).length !== newKeys.length) {\r\n                    holder[key] = newObj\r\n                } else {\r\n                    for (var i = 0, len = newKeys.length; i < len; ++i) {\r\n                        var k = newKeys[i]\r\n                        calcDiff(holder, key + \".\" + k, newObj[k], oldObj[k])\r\n                    }\r\n                }\r\n            }\r\n        } else if (newObj !== oldObj) {\r\n            holder[key] = newObj\r\n        }\r\n    }\r\n\r\n    function diff(newObj, oldObj) {\r\n        var keys = Object.keys(newObj)\r\n        var diffResult = {}\r\n        for (var i = 0, len = keys.length; i < len; ++i) {\r\n            var k = keys[i]\r\n            var oldKeyPath = k.split(\".\")\r\n            var oldValue = oldObj[oldKeyPath[0]]\r\n            for (var j = 1, jlen = oldKeyPath.length; j < jlen && oldValue !== undefined; ++j) {\r\n                oldValue = oldValue[oldKeyPath[j]]\r\n            }\r\n            calcDiff(diffResult, k, newObj[k], oldValue)\r\n        }\r\n        return diffResult\r\n    }\r\n\r\n    /*  */\r\n\r\n    // these helpers produces better vm code in JS engines due to their\r\n    // explicitness and function inlining\r\n    function isUndef(v) {\r\n        return v === undefined || v === null\r\n    }\r\n\r\n    function isDef(v) {\r\n        return v !== undefined && v !== null\r\n    }\r\n\r\n    function isTrue(v) {\r\n        return v === true\r\n    }\r\n\r\n    function isFalse(v) {\r\n        return v === false\r\n    }\r\n\r\n    /**\r\n     * Check if value is primitive\r\n     */\r\n    function isPrimitive(value) {\r\n        return typeof value === \"string\" || typeof value === \"number\"\r\n    }\r\n\r\n    /**\r\n     * Quick object check - this is primarily used to tell\r\n     * Objects from primitive values when we know the value\r\n     * is a JSON-compliant type.\r\n     */\r\n    function isObject(obj) {\r\n        return obj !== null && typeof obj === \"object\"\r\n    }\r\n\r\n    var _toString = Object.prototype.toString\r\n\r\n    /**\r\n     * Strict object type check. Only returns true\r\n     * for plain JavaScript objects.\r\n     */\r\n    function isPlainObject(obj) {\r\n        return _toString.call(obj) === \"[object Object]\"\r\n    }\r\n\r\n    function isRegExp(v) {\r\n        return _toString.call(v) === \"[object RegExp]\"\r\n    }\r\n\r\n    /**\r\n     * Check if val is a valid array index.\r\n     */\r\n    function isValidArrayIndex(val) {\r\n        var n = parseFloat(val)\r\n        return n >= 0 && Math.floor(n) === n && isFinite(val)\r\n    }\r\n\r\n    /**\r\n     * Convert a value to a string that is actually rendered.\r\n     */\r\n    function toString(val) {\r\n        return val == null\r\n            ? \"\"\r\n            : typeof val === \"object\"\r\n                ? JSON.stringify(val, null, 2)\r\n                : String(val)\r\n    }\r\n\r\n    /**\r\n     * Convert a input value to a number for persistence.\r\n     * If the conversion fails, return original string.\r\n     */\r\n    function toNumber(val) {\r\n        var n = parseFloat(val)\r\n        return isNaN(n) ? val : n\r\n    }\r\n\r\n    /**\r\n     * Make a map and return a function for checking if a key\r\n     * is in that map.\r\n     */\r\n    function makeMap(str, expectsLowerCase) {\r\n        var map = Object.create(null)\r\n        var list = str.split(\",\")\r\n        for (var i = 0; i < list.length; i++) {\r\n            map[list[i]] = true\r\n        }\r\n        return expectsLowerCase\r\n            ? function(val) {\r\n                  return map[val.toLowerCase()]\r\n              }\r\n            : function(val) {\r\n                  return map[val]\r\n              }\r\n    }\r\n\r\n    /**\r\n     * Check if a tag is a built-in tag.\r\n     */\r\n    var isBuiltInTag = makeMap(\"slot,component\", true)\r\n\r\n    /**\r\n     * Check if a attribute is a reserved attribute.\r\n     */\r\n    var isReservedAttribute = makeMap(\"key,ref,slot,is\")\r\n\r\n    /**\r\n     * Remove an item from an array\r\n     */\r\n    function remove(arr, item) {\r\n        if (arr.length) {\r\n            var index = arr.indexOf(item)\r\n            if (index > -1) {\r\n                return arr.splice(index, 1)\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Check whether the object has the property.\r\n     */\r\n    var hasOwnProperty = Object.prototype.hasOwnProperty\r\n\r\n    function hasOwn(obj, key) {\r\n        return hasOwnProperty.call(obj, key)\r\n    }\r\n\r\n    /**\r\n     * Create a cached version of a pure function.\r\n     */\r\n    function cached(fn) {\r\n        var cache = Object.create(null)\r\n        return function cachedFn(str) {\r\n            var hit = cache[str]\r\n            return hit || (cache[str] = fn(str))\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Camelize a hyphen-delimited string.\r\n     */\r\n    var camelizeRE = /-(\\w)/g\r\n    var camelize = cached(function(str) {\r\n        return str.replace(camelizeRE, function(_, c) {\r\n            return c ? c.toUpperCase() : \"\"\r\n        })\r\n    })\r\n\r\n    /**\r\n     * Capitalize a string.\r\n     */\r\n    var capitalize = cached(function(str) {\r\n        return str.charAt(0).toUpperCase() + str.slice(1)\r\n    })\r\n\r\n    /**\r\n     * Hyphenate a camelCase string.\r\n     */\r\n    var hyphenateRE = /([^-])([A-Z])/g\r\n    var hyphenate = cached(function(str) {\r\n        return str\r\n            .replace(hyphenateRE, \"$1-$2\")\r\n            .replace(hyphenateRE, \"$1-$2\")\r\n            .toLowerCase()\r\n    })\r\n\r\n    /**\r\n     * Simple bind, faster than native\r\n     */\r\n    function bind(fn, ctx) {\r\n        function boundFn(a) {\r\n            var l = arguments.length\r\n            return l ? (l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a)) : fn.call(ctx)\r\n        }\r\n        // record original fn length\r\n        boundFn._length = fn.length\r\n        return boundFn\r\n    }\r\n\r\n    /**\r\n     * Convert an Array-like object to a real Array.\r\n     */\r\n    function toArray(list, start) {\r\n        start = start || 0\r\n        var i = list.length - start\r\n        var ret = new Array(i)\r\n        while (i--) {\r\n            ret[i] = list[i + start]\r\n        }\r\n        return ret\r\n    }\r\n\r\n    /**\r\n     * Mix properties into target object.\r\n     */\r\n    function extend(to, _from) {\r\n        for (var key in _from) {\r\n            to[key] = _from[key]\r\n        }\r\n        return to\r\n    }\r\n\r\n    /**\r\n     * Merge an Array of Objects into a single Object.\r\n     */\r\n    function toObject(arr) {\r\n        var res = {}\r\n        for (var i = 0; i < arr.length; i++) {\r\n            if (arr[i]) {\r\n                extend(res, arr[i])\r\n            }\r\n        }\r\n        return res\r\n    }\r\n\r\n    /**\r\n     * Perform no operation.\r\n     * Stubbing args to make Flow happy without leaving useless transpiled code\r\n     * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\r\n     */\r\n    function noop(a, b, c) {}\r\n\r\n    /**\r\n     * Always return false.\r\n     */\r\n    var no = function(a, b, c) {\r\n        return false\r\n    }\r\n\r\n    /**\r\n     * Return same value\r\n     */\r\n    var identity = function(_) {\r\n        return _\r\n    }\r\n\r\n    /**\r\n     * Generate a static keys string from compiler modules.\r\n     */\r\n\r\n    /**\r\n     * Check if two values are loosely equal - that is,\r\n     * if they are plain objects, do they have the same shape?\r\n     */\r\n    function looseEqual(a, b) {\r\n        var isObjectA = isObject(a)\r\n        var isObjectB = isObject(b)\r\n        if (isObjectA && isObjectB) {\r\n            try {\r\n                return JSON.stringify(a) === JSON.stringify(b)\r\n            } catch (e) {\r\n                // possible circular reference\r\n                return a === b\r\n            }\r\n        } else if (!isObjectA && !isObjectB) {\r\n            return String(a) === String(b)\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    function looseIndexOf(arr, val) {\r\n        for (var i = 0; i < arr.length; i++) {\r\n            if (looseEqual(arr[i], val)) {\r\n                return i\r\n            }\r\n        }\r\n        return -1\r\n    }\r\n\r\n    /**\r\n     * Ensure a function is called only once.\r\n     */\r\n    function once(fn) {\r\n        var called = false\r\n        return function() {\r\n            if (!called) {\r\n                called = true\r\n                fn.apply(this, arguments)\r\n            }\r\n        }\r\n    }\r\n\r\n    var SSR_ATTR = \"data-server-rendered\"\r\n\r\n    var ASSET_TYPES = [\"component\", \"directive\", \"filter\"]\r\n\r\n    var LIFECYCLE_HOOKS = [\r\n        \"beforeCreate\",\r\n        \"created\",\r\n        \"beforeMount\",\r\n        \"mounted\",\r\n        \"beforeUpdate\",\r\n        \"updated\",\r\n        \"beforeDestroy\",\r\n        \"destroyed\",\r\n        \"activated\",\r\n        \"deactivated\",\r\n        \"onLaunch\",\r\n        \"onLoad\",\r\n        \"onShow\",\r\n        \"onReady\",\r\n        \"onHide\",\r\n        \"onUnload\",\r\n        \"onPullDownRefresh\",\r\n        \"onReachBottom\",\r\n        \"onShareAppMessage\",\r\n        \"onPageScroll\",\r\n        \"onTabItemTap\",\r\n        \"attached\",\r\n        \"ready\",\r\n        \"moved\",\r\n        \"detached\",\r\n        \"onUniNViewMessage\", //fixed by xxxxxx\r\n        \"onNavigationBarButtonTap\", //fixed by xxxxxx\n        \"onBackPress\",//fixed by xxxxxx\r\n    ]\r\n\r\n    /*  */\r\n\r\n    var config = {\r\n        /**\r\n         * Option merge strategies (used in core/util/options)\r\n         */\r\n        optionMergeStrategies: Object.create(null),\r\n\r\n        /**\r\n         * Whether to suppress warnings.\r\n         */\r\n        silent: false,\r\n\r\n        /**\r\n         * Show production mode tip message on boot?\r\n         */\r\n        productionTip: \"production\" !== \"production\",\r\n\r\n        /**\r\n         * Whether to enable devtools\r\n         */\r\n        devtools: \"production\" !== \"production\",\r\n\r\n        /**\r\n         * Whether to record perf\r\n         */\r\n        performance: false,\r\n\r\n        /**\r\n         * Error handler for watcher errors\r\n         */\r\n        errorHandler: null,\r\n\r\n        /**\r\n         * Warn handler for watcher warns\r\n         */\r\n        warnHandler: null,\r\n\r\n        /**\r\n         * Ignore certain custom elements\r\n         */\r\n        ignoredElements: [],\r\n\r\n        /**\r\n         * Custom user key aliases for v-on\r\n         */\r\n        keyCodes: Object.create(null),\r\n\r\n        /**\r\n         * Check if a tag is reserved so that it cannot be registered as a\r\n         * component. This is platform-dependent and may be overwritten.\r\n         */\r\n        isReservedTag: no,\r\n\r\n        /**\r\n         * Check if an attribute is reserved so that it cannot be used as a component\r\n         * prop. This is platform-dependent and may be overwritten.\r\n         */\r\n        isReservedAttr: no,\r\n\r\n        /**\r\n         * Check if a tag is an unknown element.\r\n         * Platform-dependent.\r\n         */\r\n        isUnknownElement: no,\r\n\r\n        /**\r\n         * Get the namespace of an element\r\n         */\r\n        getTagNamespace: noop,\r\n\r\n        /**\r\n         * Parse the real tag name for the specific platform.\r\n         */\r\n        parsePlatformTagName: identity,\r\n\r\n        /**\r\n         * Check if an attribute must be bound using property, e.g. value\r\n         * Platform-dependent.\r\n         */\r\n        mustUseProp: no,\r\n\r\n        /**\r\n         * Exposed for legacy reasons\r\n         */\r\n        _lifecycleHooks: LIFECYCLE_HOOKS\r\n    }\r\n\r\n    /*  */\r\n\r\n    var emptyObject = Object.freeze({})\r\n\r\n    /**\r\n     * Check if a string starts with $ or _\r\n     */\r\n    function isReserved(str) {\r\n        var c = (str + \"\").charCodeAt(0)\r\n        return c === 0x24 || c === 0x5f\r\n    }\r\n\r\n    /**\r\n     * Define a property.\r\n     */\r\n    function def(obj, key, val, enumerable) {\r\n        Object.defineProperty(obj, key, {\r\n            value: val,\r\n            enumerable: !!enumerable,\r\n            writable: true,\r\n            configurable: true\r\n        })\r\n    }\r\n\r\n    /**\r\n     * Parse simple path.\r\n     */\r\n    var bailRE = /[^\\w.$]/\r\n\r\n    function parsePath(path) {\r\n        if (bailRE.test(path)) {\r\n            return\r\n        }\r\n        var segments = path.split(\".\")\r\n        return function(obj) {\r\n            for (var i = 0; i < segments.length; i++) {\r\n                if (!obj) {\r\n                    return\r\n                }\r\n                obj = obj[segments[i]]\r\n            }\r\n            return obj\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    var warn = noop\r\n\r\n    var formatComponentName = null // work around flow check\r\n\r\n    /*  */\r\n\r\n    function handleError(err, vm, info) {\r\n        if (config.errorHandler) {\r\n            config.errorHandler.call(null, err, vm, info)\r\n        } else {\r\n            if (inBrowser && typeof console !== \"undefined\") {\r\n                console.error(err)\r\n            } else {\r\n                throw err\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    // can we use __proto__?\r\n    var hasProto = \"__proto__\" in {}\r\n\r\n    // Browser environment sniffing\r\n    var inBrowser = typeof window !== \"undefined\"\r\n    var UA = [\"mpvue-runtime\"].join()\r\n    var isIE = UA && /msie|trident/.test(UA)\r\n    var isIE9 = UA && UA.indexOf(\"msie 9.0\") > 0\r\n    var isEdge = UA && UA.indexOf(\"edge/\") > 0\r\n    var isAndroid = UA && UA.indexOf(\"android\") > 0\r\n    var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA)\r\n    var isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge\r\n\r\n    // Firefix has a \"watch\" function on Object.prototype...\r\n    var nativeWatch = {}.watch\r\n\r\n    var supportsPassive = false\r\n    if (inBrowser) {\r\n        try {\r\n            var opts = {}\r\n            Object.defineProperty(opts, \"passive\", {\r\n                get: function get() {\r\n                    /* istanbul ignore next */\r\n                    supportsPassive = true\r\n                }\r\n            }) // https://github.com/facebook/flow/issues/285\r\n            window.addEventListener(\"test-passive\", null, opts)\r\n        } catch (e) {}\r\n    }\r\n\r\n    // this needs to be lazy-evaled because vue may be required before\r\n    // vue-server-renderer can set VUE_ENV\r\n    var _isServer\r\n    var isServerRendering = function() {\r\n        if (_isServer === undefined) {\r\n            /* istanbul ignore if */\r\n            if (!inBrowser && typeof global !== \"undefined\") {\r\n                // detect presence of vue-server-renderer and avoid\r\n                // Webpack shimming the process\r\n                _isServer = global[\"process\"].env.VUE_ENV === \"server\"\r\n            } else {\r\n                _isServer = false\r\n            }\r\n        }\r\n        return _isServer\r\n    }\r\n\r\n    // detect devtools\r\n    var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__\r\n\r\n    /* istanbul ignore next */\r\n    function isNative(Ctor) {\r\n        return typeof Ctor === \"function\" && /native code/.test(Ctor.toString())\r\n    }\r\n\r\n    var hasSymbol =\r\n        typeof Symbol !== \"undefined\" &&\r\n        isNative(Symbol) &&\r\n        typeof Reflect !== \"undefined\" &&\r\n        isNative(Reflect.ownKeys)\r\n\r\n    /**\r\n     * Defer a task to execute it asynchronously.\r\n     */\r\n    var nextTick = (function() {\r\n        var callbacks = []\r\n        var pending = false\r\n        var timerFunc\r\n\r\n        function nextTickHandler() {\r\n            pending = false\r\n            var copies = callbacks.slice(0)\r\n            callbacks.length = 0\r\n            for (var i = 0; i < copies.length; i++) {\r\n                copies[i]()\r\n            }\r\n        }\r\n\r\n        // the nextTick behavior leverages the microtask queue, which can be accessed\r\n        // via either native Promise.then or MutationObserver.\r\n        // MutationObserver has wider support, however it is seriously bugged in\r\n        // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\r\n        // completely stops working after triggering a few times... so, if native\r\n        // Promise is available, we will use it:\r\n        /* istanbul ignore if */\r\n        if (typeof Promise !== \"undefined\" && isNative(Promise)) {\r\n            var p = Promise.resolve()\r\n            var logError = function(err) {\r\n                console.error(err)\r\n            }\r\n            timerFunc = function() {\r\n                p.then(nextTickHandler).catch(logError)\r\n                // in problematic UIWebViews, Promise.then doesn't completely break, but\r\n                // it can get stuck in a weird state where callbacks are pushed into the\r\n                // microtask queue but the queue isn't being flushed, until the browser\r\n                // needs to do some other work, e.g. handle a timer. Therefore we can\r\n                // \"force\" the microtask queue to be flushed by adding an empty timer.\r\n                if (isIOS) {\r\n                    setTimeout(noop)\r\n                }\r\n            }\r\n            // } else if (typeof MutationObserver !== 'undefined' && (\r\n            //   isNative(MutationObserver) ||\r\n            //   // PhantomJS and iOS 7.x\r\n            //   MutationObserver.toString() === '[object MutationObserverConstructor]'\r\n            // )) {\r\n            //   // use MutationObserver where native Promise is not available,\r\n            //   // e.g. PhantomJS IE11, iOS7, Android 4.4\r\n            //   var counter = 1\r\n            //   var observer = new MutationObserver(nextTickHandler)\r\n            //   var textNode = document.createTextNode(String(counter))\r\n            //   observer.observe(textNode, {\r\n            //     characterData: true\r\n            //   })\r\n            //   timerFunc = () => {\r\n            //     counter = (counter + 1) % 2\r\n            //     textNode.data = String(counter)\r\n            //   }\r\n        } else {\r\n            // fallback to setTimeout\r\n            /* istanbul ignore next */\r\n            timerFunc = function() {\r\n                setTimeout(nextTickHandler, 0)\r\n            }\r\n        }\r\n\r\n        return function queueNextTick(cb, ctx) {\r\n            var _resolve\r\n            callbacks.push(function() {\r\n                if (cb) {\r\n                    try {\r\n                        cb.call(ctx)\r\n                    } catch (e) {\r\n                        handleError(e, ctx, \"nextTick\")\r\n                    }\r\n                } else if (_resolve) {\r\n                    _resolve(ctx)\r\n                }\r\n            })\r\n            if (!pending) {\r\n                pending = true\r\n                timerFunc()\r\n            }\r\n            if (!cb && typeof Promise !== \"undefined\") {\r\n                return new Promise(function(resolve, reject) {\r\n                    _resolve = resolve\r\n                })\r\n            }\r\n        }\r\n    })()\r\n\r\n    var _Set\r\n    /* istanbul ignore if */\r\n    if (typeof Set !== \"undefined\" && isNative(Set)) {\r\n        // use native Set when available.\r\n        _Set = Set\r\n    } else {\r\n        // a non-standard Set polyfill that only works with primitive keys.\r\n        _Set = (function() {\r\n            function Set() {\r\n                this.set = Object.create(null)\r\n            }\r\n            Set.prototype.has = function has(key) {\r\n                return this.set[key] === true\r\n            }\r\n            Set.prototype.add = function add(key) {\r\n                this.set[key] = true\r\n            }\r\n            Set.prototype.clear = function clear() {\r\n                this.set = Object.create(null)\r\n            }\r\n\r\n            return Set\r\n        })()\r\n    }\r\n\r\n    /*  */\r\n\r\n    var uid$1 = 0\r\n\r\n    /**\r\n     * A dep is an observable that can have multiple\r\n     * directives subscribing to it.\r\n     */\r\n    var Dep = function Dep() {\r\n        this.id = uid$1++\r\n        this.subs = []\r\n    }\r\n\r\n    Dep.prototype.addSub = function addSub(sub) {\r\n        this.subs.push(sub)\r\n    }\r\n\r\n    Dep.prototype.removeSub = function removeSub(sub) {\r\n        remove(this.subs, sub)\r\n    }\r\n\r\n    Dep.prototype.depend = function depend() {\r\n        if (Dep.target) {\r\n            Dep.target.addDep(this)\r\n        }\r\n    }\r\n\r\n    Dep.prototype.notify = function notify() {\r\n        // stabilize the subscriber list first\r\n        var subs = this.subs.slice()\r\n        for (var i = 0, l = subs.length; i < l; i++) {\r\n            subs[i].update()\r\n        }\r\n    }\r\n\r\n    // the current target watcher being evaluated.\r\n    // this is globally unique because there could be only one\r\n    // watcher being evaluated at any time.\r\n    Dep.target = null\r\n    var targetStack = []\r\n\r\n    function pushTarget(_target) {\r\n        if (Dep.target) {\r\n            targetStack.push(Dep.target)\r\n        }\r\n        Dep.target = _target\r\n    }\r\n\r\n    function popTarget() {\r\n        Dep.target = targetStack.pop()\r\n    }\r\n\r\n    /*\r\n     * not type checking this file because flow doesn't play well with\r\n     * dynamically accessing methods on Array prototype\r\n     */\r\n\r\n    var arrayProto = Array.prototype\r\n    var arrayMethods = Object.create(arrayProto)\r\n    ;[\"push\", \"pop\", \"shift\", \"unshift\", \"splice\", \"sort\", \"reverse\"].forEach(function(method) {\r\n        // cache original method\r\n        var original = arrayProto[method]\r\n        def(arrayMethods, method, function mutator() {\r\n            var args = [],\r\n                len = arguments.length\r\n            while (len--) args[len] = arguments[len]\r\n\r\n            var result = original.apply(this, args)\r\n            var ob = this.__ob__\r\n            var inserted\r\n            switch (method) {\r\n                case \"push\":\r\n                case \"unshift\":\r\n                    inserted = args\r\n                    break\r\n                case \"splice\":\r\n                    inserted = args.slice(2)\r\n                    break\r\n            }\r\n            if (inserted) {\r\n                ob.observeArray(inserted)\r\n            }\r\n            // notify change\r\n            ob.dep.notify()\r\n            return result\r\n        })\r\n    })\r\n\r\n    /*  */\r\n\r\n    var arrayKeys = Object.getOwnPropertyNames(arrayMethods)\r\n\r\n    /**\r\n     * By default, when a reactive property is set, the new value is\r\n     * also converted to become reactive. However when passing down props,\r\n     * we don't want to force conversion because the value may be a nested value\r\n     * under a frozen data structure. Converting it would defeat the optimization.\r\n     */\r\n    var observerState = {\r\n        shouldConvert: true\r\n    }\r\n\r\n    /**\r\n     * Observer class that are attached to each observed\r\n     * object. Once attached, the observer converts target\r\n     * object's property keys into getter/setters that\r\n     * collect dependencies and dispatches updates.\r\n     */\r\n    var Observer = function Observer(value) {\r\n        this.value = value\r\n        this.dep = new Dep()\r\n        this.vmCount = 0\r\n        def(value, \"__ob__\", this)\r\n        if (Array.isArray(value)) {\r\n            var augment = hasProto ? protoAugment : copyAugment\r\n            augment(value, arrayMethods, arrayKeys)\r\n            this.observeArray(value)\r\n        } else {\r\n            this.walk(value)\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Walk through each property and convert them into\r\n     * getter/setters. This method should only be called when\r\n     * value type is Object.\r\n     */\r\n    Observer.prototype.walk = function walk(obj) {\r\n        var keys = Object.keys(obj)\r\n        for (var i = 0; i < keys.length; i++) {\r\n            defineReactive$$1(obj, keys[i], obj[keys[i]])\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Observe a list of Array items.\r\n     */\r\n    Observer.prototype.observeArray = function observeArray(items) {\r\n        for (var i = 0, l = items.length; i < l; i++) {\r\n            observe(items[i])\r\n        }\r\n    }\r\n\r\n    // helpers\r\n\r\n    /**\r\n     * Augment an target Object or Array by intercepting\r\n     * the prototype chain using __proto__\r\n     */\r\n    function protoAugment(target, src, keys) {\r\n        /* eslint-disable no-proto */\r\n        target.__proto__ = src\r\n        /* eslint-enable no-proto */\r\n    }\r\n\r\n    /**\r\n     * Augment an target Object or Array by defining\r\n     * hidden properties.\r\n     */\r\n    /* istanbul ignore next */\r\n    function copyAugment(target, src, keys) {\r\n        for (var i = 0, l = keys.length; i < l; i++) {\r\n            var key = keys[i]\r\n            def(target, key, src[key])\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Attempt to create an observer instance for a value,\r\n     * returns the new observer if successfully observed,\r\n     * or the existing observer if the value already has one.\r\n     */\r\n    function observe(value, asRootData) {\r\n        if (!isObject(value)) {\r\n            return\r\n        }\r\n        var ob\r\n        if (hasOwn(value, \"__ob__\") && value.__ob__ instanceof Observer) {\r\n            ob = value.__ob__\r\n        } else if (\r\n            observerState.shouldConvert &&\r\n            !isServerRendering() &&\r\n            (Array.isArray(value) || isPlainObject(value)) &&\r\n            Object.isExtensible(value) &&\r\n            !value._isVue\r\n        ) {\r\n            ob = new Observer(value)\r\n        }\r\n        if (asRootData && ob) {\r\n            ob.vmCount++\r\n        }\r\n        return ob\r\n    }\r\n\r\n    /**\r\n     * Define a reactive property on an Object.\r\n     */\r\n    function defineReactive$$1(obj, key, val, customSetter, shallow) {\r\n        var dep = new Dep()\r\n\r\n        var property = Object.getOwnPropertyDescriptor(obj, key)\r\n        if (property && property.configurable === false) {\r\n            return\r\n        }\r\n\r\n        // cater for pre-defined getter/setters\r\n        var getter = property && property.get\r\n        var setter = property && property.set\r\n\r\n        var childOb = !shallow && observe(val)\r\n        Object.defineProperty(obj, key, {\r\n            enumerable: true,\r\n            configurable: true,\r\n            get: function reactiveGetter() {\r\n                var value = getter ? getter.call(obj) : val\r\n                if (Dep.target) {\r\n                    dep.depend()\r\n                    if (childOb) {\r\n                        childOb.dep.depend()\r\n                    }\r\n                    if (Array.isArray(value)) {\r\n                        dependArray(value)\r\n                    }\r\n                }\r\n                return value\r\n            },\r\n            set: function reactiveSetter(newVal) {\r\n                var value = getter ? getter.call(obj) : val\r\n                /* eslint-disable no-self-compare */\r\n                if (newVal === value || (newVal !== newVal && value !== value)) {\r\n                    return\r\n                }\r\n                /* eslint-enable no-self-compare */\r\n                if (false) {}\r\n                if (setter) {\r\n                    setter.call(obj, newVal)\r\n                } else {\r\n                    val = newVal\r\n                }\r\n                childOb = !shallow && observe(newVal)\r\n                dep.notify()\r\n            }\r\n        })\r\n    }\r\n\r\n    /**\r\n     * Set a property on an object. Adds the new property and\r\n     * triggers change notification if the property doesn't\r\n     * already exist.\r\n     */\r\n    function set(target, key, val) {\r\n        if (Array.isArray(target) && isValidArrayIndex(key)) {\r\n            target.length = Math.max(target.length, key)\r\n            target.splice(key, 1, val)\r\n            return val\r\n        }\r\n        if (hasOwn(target, key)) {\r\n            target[key] = val\r\n            return val\r\n        }\r\n        var ob = target.__ob__\r\n        if (target._isVue || (ob && ob.vmCount)) {\r\n             false &&\r\n                false\r\n            return val\r\n        }\r\n        if (!ob) {\r\n            target[key] = val\r\n            return val\r\n        }\r\n        defineReactive$$1(ob.value, key, val)\r\n        ob.dep.notify()\r\n        return val\r\n    }\r\n\r\n    /**\r\n     * Delete a property and trigger change if necessary.\r\n     */\r\n    function del(target, key) {\r\n        if (Array.isArray(target) && isValidArrayIndex(key)) {\r\n            target.splice(key, 1)\r\n            return\r\n        }\r\n        var ob = target.__ob__\r\n        if (target._isVue || (ob && ob.vmCount)) {\r\n             false &&\r\n                false\r\n            return\r\n        }\r\n        if (!hasOwn(target, key)) {\r\n            return\r\n        }\r\n        delete target[key]\r\n        if (!ob) {\r\n            return\r\n        }\r\n        ob.dep.notify()\r\n    }\r\n\r\n    /**\r\n     * Collect dependencies on array elements when the array is touched, since\r\n     * we cannot intercept array element access like property getters.\r\n     */\r\n    function dependArray(value) {\r\n        for (var e = void 0, i = 0, l = value.length; i < l; i++) {\r\n            e = value[i]\r\n            e && e.__ob__ && e.__ob__.dep.depend()\r\n            if (Array.isArray(e)) {\r\n                dependArray(e)\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Option overwriting strategies are functions that handle\r\n     * how to merge a parent option value and a child option\r\n     * value into the final value.\r\n     */\r\n    var strats = config.optionMergeStrategies\r\n\r\n    /**\r\n     * Options with restrictions\r\n     */\r\n    /**\r\n     * Helper that recursively merges two data objects together.\r\n     */\r\n    function mergeData(to, from) {\r\n        if (!from) {\r\n            return to\r\n        }\r\n        var key, toVal, fromVal\r\n        var keys = Object.keys(from)\r\n        for (var i = 0; i < keys.length; i++) {\r\n            key = keys[i]\r\n            toVal = to[key]\r\n            fromVal = from[key]\r\n            if (!hasOwn(to, key)) {\r\n                set(to, key, fromVal)\r\n            } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\r\n                mergeData(toVal, fromVal)\r\n            }\r\n        }\r\n        return to\r\n    }\r\n\r\n    /**\r\n     * Data\r\n     */\r\n    function mergeDataOrFn(parentVal, childVal, vm) {\r\n        if (!vm) {\r\n            // in a Vue.extend merge, both should be functions\r\n            if (!childVal) {\r\n                return parentVal\r\n            }\r\n            if (!parentVal) {\r\n                return childVal\r\n            }\r\n            // when parentVal & childVal are both present,\r\n            // we need to return a function that returns the\r\n            // merged result of both functions... no need to\r\n            // check if parentVal is a function here because\r\n            // it has to be a function to pass previous merges.\r\n            return function mergedDataFn() {\r\n                return mergeData(\r\n                    typeof childVal === \"function\" ? childVal.call(this) : childVal,\r\n                    parentVal.call(this)\r\n                )\r\n            }\r\n        } else if (parentVal || childVal) {\r\n            return function mergedInstanceDataFn() {\r\n                // instance merge\r\n                var instanceData = typeof childVal === \"function\" ? childVal.call(vm) : childVal\r\n                var defaultData = typeof parentVal === \"function\" ? parentVal.call(vm) : undefined\r\n                if (instanceData) {\r\n                    return mergeData(instanceData, defaultData)\r\n                } else {\r\n                    return defaultData\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    strats.data = function(parentVal, childVal, vm) {\r\n        if (!vm) {\r\n            if (childVal && typeof childVal !== \"function\") {\r\n                 false &&\r\n                    false\r\n\r\n                return parentVal\r\n            }\r\n            return mergeDataOrFn.call(this, parentVal, childVal)\r\n        }\r\n\r\n        return mergeDataOrFn(parentVal, childVal, vm)\r\n    }\r\n\r\n    /**\r\n     * Hooks and props are merged as arrays.\r\n     */\r\n    function mergeHook(parentVal, childVal) {\r\n        return childVal\r\n            ? parentVal\r\n                ? parentVal.concat(childVal)\r\n                : Array.isArray(childVal)\r\n                    ? childVal\r\n                    : [childVal]\r\n            : parentVal\r\n    }\r\n\r\n    LIFECYCLE_HOOKS.forEach(function(hook) {\r\n        strats[hook] = mergeHook\r\n    })\r\n\r\n    /**\r\n     * Assets\r\n     *\r\n     * When a vm is present (instance creation), we need to do\r\n     * a three-way merge between constructor options, instance\r\n     * options and parent options.\r\n     */\r\n    function mergeAssets(parentVal, childVal) {\r\n        var res = Object.create(parentVal || null)\r\n        return childVal ? extend(res, childVal) : res\r\n    }\r\n\r\n    ASSET_TYPES.forEach(function(type) {\r\n        strats[type + \"s\"] = mergeAssets\r\n    })\r\n\r\n    /**\r\n     * Watchers.\r\n     *\r\n     * Watchers hashes should not overwrite one\r\n     * another, so we merge them as arrays.\r\n     */\r\n    strats.watch = function(parentVal, childVal) {\r\n        // work around Firefox's Object.prototype.watch...\r\n        if (parentVal === nativeWatch) {\r\n            parentVal = undefined\r\n        }\r\n        if (childVal === nativeWatch) {\r\n            childVal = undefined\r\n        }\r\n        /* istanbul ignore if */\r\n        if (!childVal) {\r\n            return Object.create(parentVal || null)\r\n        }\r\n        if (!parentVal) {\r\n            return childVal\r\n        }\r\n        var ret = {}\r\n        extend(ret, parentVal)\r\n        for (var key in childVal) {\r\n            var parent = ret[key]\r\n            var child = childVal[key]\r\n            if (parent && !Array.isArray(parent)) {\r\n                parent = [parent]\r\n            }\r\n            ret[key] = parent ? parent.concat(child) : Array.isArray(child) ? child : [child]\r\n        }\r\n        return ret\r\n    }\r\n\r\n    /**\r\n     * Other object hashes.\r\n     */\r\n    strats.props = strats.methods = strats.inject = strats.computed = function(\r\n        parentVal,\r\n        childVal\r\n    ) {\r\n        if (!childVal) {\r\n            return Object.create(parentVal || null)\r\n        }\r\n        if (!parentVal) {\r\n            return childVal\r\n        }\r\n        var ret = Object.create(null)\r\n        extend(ret, parentVal)\r\n        extend(ret, childVal)\r\n        return ret\r\n    }\r\n    strats.provide = mergeDataOrFn\r\n\r\n    /**\r\n     * Default strategy.\r\n     */\r\n    var defaultStrat = function(parentVal, childVal) {\r\n        return childVal === undefined ? parentVal : childVal\r\n    }\r\n\r\n    /**\r\n     * Ensure all props option syntax are normalized into the\r\n     * Object-based format.\r\n     */\r\n    function normalizeProps(options) {\r\n        var props = options.props\r\n        if (!props) {\r\n            return\r\n        }\r\n        var res = {}\r\n        var i, val, name\r\n        if (Array.isArray(props)) {\r\n            i = props.length\r\n            while (i--) {\r\n                val = props[i]\r\n                if (typeof val === \"string\") {\r\n                    name = camelize(val)\r\n                    res[name] = {\r\n                        type: null\r\n                    }\r\n                } else {\r\n                }\r\n            }\r\n        } else if (isPlainObject(props)) {\r\n            for (var key in props) {\r\n                val = props[key]\r\n                name = camelize(key)\r\n                res[name] = isPlainObject(val)\r\n                    ? val\r\n                    : {\r\n                          type: val\r\n                      }\r\n            }\r\n        }\r\n        options.props = res\r\n    }\r\n\r\n    /**\r\n     * Normalize all injections into Object-based format\r\n     */\r\n    function normalizeInject(options) {\r\n        var inject = options.inject\r\n        if (Array.isArray(inject)) {\r\n            var normalized = (options.inject = {})\r\n            for (var i = 0; i < inject.length; i++) {\r\n                normalized[inject[i]] = inject[i]\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Normalize raw function directives into object format.\r\n     */\r\n    function normalizeDirectives(options) {\r\n        var dirs = options.directives\r\n        if (dirs) {\r\n            for (var key in dirs) {\r\n                var def = dirs[key]\r\n                if (typeof def === \"function\") {\r\n                    dirs[key] = {\r\n                        bind: def,\r\n                        update: def\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Merge two option objects into a new one.\r\n     * Core utility used in both instantiation and inheritance.\r\n     */\r\n    function mergeOptions(parent, child, vm) {\r\n        if (typeof child === \"function\") {\r\n            child = child.options\r\n        }\r\n\r\n        normalizeProps(child)\r\n        normalizeInject(child)\r\n        normalizeDirectives(child)\r\n        var extendsFrom = child.extends\r\n        if (extendsFrom) {\r\n            parent = mergeOptions(parent, extendsFrom, vm)\r\n        }\r\n        if (child.mixins) {\r\n            for (var i = 0, l = child.mixins.length; i < l; i++) {\r\n                parent = mergeOptions(parent, child.mixins[i], vm)\r\n            }\r\n        }\r\n        var options = {}\r\n        var key\r\n        for (key in parent) {\r\n            mergeField(key)\r\n        }\r\n        for (key in child) {\r\n            if (!hasOwn(parent, key)) {\r\n                mergeField(key)\r\n            }\r\n        }\r\n\r\n        function mergeField(key) {\r\n            var strat = strats[key] || defaultStrat\r\n            options[key] = strat(parent[key], child[key], vm, key)\r\n        }\r\n        return options\r\n    }\r\n\r\n    /**\r\n     * Resolve an asset.\r\n     * This function is used because child instances need access\r\n     * to assets defined in its ancestor chain.\r\n     */\r\n    function resolveAsset(options, type, id, warnMissing) {\r\n        /* istanbul ignore if */\r\n        if (typeof id !== \"string\") {\r\n            return\r\n        }\r\n        var assets = options[type]\r\n        // check local registration variations first\r\n        if (hasOwn(assets, id)) {\r\n            return assets[id]\r\n        }\r\n        var camelizedId = camelize(id)\r\n        if (hasOwn(assets, camelizedId)) {\r\n            return assets[camelizedId]\r\n        }\r\n        var PascalCaseId = capitalize(camelizedId)\r\n        if (hasOwn(assets, PascalCaseId)) {\r\n            return assets[PascalCaseId]\r\n        }\r\n        // fallback to prototype chain\r\n        var res = assets[id] || assets[camelizedId] || assets[PascalCaseId]\r\n        if (false) {}\r\n        return res\r\n    }\r\n\r\n    /*  */\r\n\r\n    function validateProp(key, propOptions, propsData, vm) {\r\n        var prop = propOptions[key]\r\n        var absent = !hasOwn(propsData, key)\r\n        var value = propsData[key]\r\n        // handle boolean props\r\n        if (isType(Boolean, prop.type)) {\r\n            if (absent && !hasOwn(prop, \"default\")) {\r\n                value = false\r\n            } else if (!isType(String, prop.type) && (value === \"\" || value === hyphenate(key))) {\r\n                value = true\r\n            }\r\n        }\r\n        // check default value\r\n        if (value === undefined) {\r\n            value = getPropDefaultValue(vm, prop, key)\r\n            // since the default value is a fresh copy,\r\n            // make sure to observe it.\r\n            var prevShouldConvert = observerState.shouldConvert\r\n            observerState.shouldConvert = true\r\n            observe(value)\r\n            observerState.shouldConvert = prevShouldConvert\r\n        }\r\n        return value\r\n    }\r\n\r\n    /**\r\n     * Get the default value of a prop.\r\n     */\r\n    function getPropDefaultValue(vm, prop, key) {\r\n        // no default, return undefined\r\n        if (!hasOwn(prop, \"default\")) {\r\n            return undefined\r\n        }\r\n        var def = prop.default\r\n        // warn against non-factory defaults for Object & Array\r\n        if (false) {}\r\n        // the raw prop value was also undefined from previous render,\r\n        // return previous default value to avoid unnecessary watcher trigger\r\n        if (\r\n            vm &&\r\n            vm.$options.propsData &&\r\n            vm.$options.propsData[key] === undefined &&\r\n            vm._props[key] !== undefined\r\n        ) {\r\n            return vm._props[key]\r\n        }\r\n        // call factory function for non-Function types\r\n        // a value is Function if its prototype is function even across different execution context\r\n        return typeof def === \"function\" && getType(prop.type) !== \"Function\" ? def.call(vm) : def\r\n    }\r\n\r\n    /**\r\n     * Use function string name to check built-in types,\r\n     * because a simple equality check will fail when running\r\n     * across different vms / iframes.\r\n     */\r\n    function getType(fn) {\r\n        var match = fn && fn.toString().match(/^\\s*function (\\w+)/)\r\n        return match ? match[1] : \"\"\r\n    }\r\n\r\n    function isType(type, fn) {\r\n        if (!Array.isArray(fn)) {\r\n            return getType(fn) === getType(type)\r\n        }\r\n        for (var i = 0, len = fn.length; i < len; i++) {\r\n            if (getType(fn[i]) === getType(type)) {\r\n                return true\r\n            }\r\n        }\r\n        /* istanbul ignore next */\r\n        return false\r\n    }\r\n\r\n    /*  */\r\n\r\n    /* not type checking this file because flow doesn't play well with Proxy */\r\n\r\n    var mark\r\n    var measure\r\n\r\n    /*  */\r\n\r\n    var VNode = function VNode(\r\n        tag,\r\n        data,\r\n        children,\r\n        text,\r\n        elm,\r\n        context,\r\n        componentOptions,\r\n        asyncFactory\r\n    ) {\r\n        this.tag = tag\r\n        this.data = data\r\n        this.children = children\r\n        this.text = text\r\n        this.elm = elm\r\n        this.ns = undefined\r\n        this.context = context\r\n        this.functionalContext = undefined\r\n        this.key = data && data.key\r\n        this.componentOptions = componentOptions\r\n        this.componentInstance = undefined\r\n        this.parent = undefined\r\n        this.raw = false\r\n        this.isStatic = false\r\n        this.isRootInsert = true\r\n        this.isComment = false\r\n        this.isCloned = false\r\n        this.isOnce = false\r\n        this.asyncFactory = asyncFactory\r\n        this.asyncMeta = undefined\r\n        this.isAsyncPlaceholder = false\r\n    }\r\n\r\n    var prototypeAccessors = {\r\n        child: {}\r\n    }\r\n\r\n    // DEPRECATED: alias for componentInstance for backwards compat.\r\n    /* istanbul ignore next */\r\n    prototypeAccessors.child.get = function() {\r\n        return this.componentInstance\r\n    }\r\n\r\n    Object.defineProperties(VNode.prototype, prototypeAccessors)\r\n\r\n    var createEmptyVNode = function(text) {\r\n        if (text === void 0) text = \"\"\r\n\r\n        var node = new VNode()\r\n        node.text = text\r\n        node.isComment = true\r\n        return node\r\n    }\r\n\r\n    function createTextVNode(val) {\r\n        return new VNode(undefined, undefined, undefined, String(val))\r\n    }\r\n\r\n    // optimized shallow clone\r\n    // used for static nodes and slot nodes because they may be reused across\r\n    // multiple renders, cloning them avoids errors when DOM manipulations rely\r\n    // on their elm reference.\r\n    function cloneVNode(vnode) {\r\n        var cloned = new VNode(\r\n            vnode.tag,\r\n            vnode.data,\r\n            vnode.children,\r\n            vnode.text,\r\n            vnode.elm,\r\n            vnode.context,\r\n            vnode.componentOptions,\r\n            vnode.asyncFactory\r\n        )\r\n        cloned.ns = vnode.ns\r\n        cloned.isStatic = vnode.isStatic\r\n        cloned.key = vnode.key\r\n        cloned.isComment = vnode.isComment\r\n        cloned.isCloned = true\r\n        return cloned\r\n    }\r\n\r\n    function cloneVNodes(vnodes) {\r\n        var len = vnodes.length\r\n        var res = new Array(len)\r\n        for (var i = 0; i < len; i++) {\r\n            res[i] = cloneVNode(vnodes[i])\r\n        }\r\n        return res\r\n    }\r\n\r\n    /*  */\r\n\r\n    var normalizeEvent = cached(function(name) {\r\n        var passive = name.charAt(0) === \"&\"\r\n        name = passive ? name.slice(1) : name\r\n        var once$$1 = name.charAt(0) === \"~\" // Prefixed last, checked first\r\n        name = once$$1 ? name.slice(1) : name\r\n        var capture = name.charAt(0) === \"!\"\r\n        name = capture ? name.slice(1) : name\r\n        return {\r\n            name: name,\r\n            once: once$$1,\r\n            capture: capture,\r\n            passive: passive\r\n        }\r\n    })\r\n\r\n    function createFnInvoker(fns) {\r\n        function invoker() {\r\n            var arguments$1 = arguments\r\n\r\n            var fns = invoker.fns\r\n            if (Array.isArray(fns)) {\r\n                var cloned = fns.slice()\r\n                for (var i = 0; i < cloned.length; i++) {\r\n                    cloned[i].apply(null, arguments$1)\r\n                }\r\n            } else {\r\n                // return handler return value for single handlers\r\n                return fns.apply(null, arguments)\r\n            }\r\n        }\r\n        invoker.fns = fns\r\n        return invoker\r\n    }\r\n\r\n    function updateListeners(on, oldOn, add, remove$$1, vm) {\r\n        var name, cur, old, event\r\n        for (name in on) {\r\n            cur = on[name]\r\n            old = oldOn[name]\r\n            event = normalizeEvent(name)\r\n            if (isUndef(cur)) {\r\n                 false &&\r\n                    false\r\n            } else if (isUndef(old)) {\r\n                if (isUndef(cur.fns)) {\r\n                    cur = on[name] = createFnInvoker(cur)\r\n                }\r\n                add(event.name, cur, event.once, event.capture, event.passive)\r\n            } else if (cur !== old) {\r\n                old.fns = cur\r\n                on[name] = old\r\n            }\r\n        }\r\n        for (name in oldOn) {\r\n            if (isUndef(on[name])) {\r\n                event = normalizeEvent(name)\r\n                remove$$1(event.name, oldOn[name], event.capture)\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /*  */\r\n\r\n    function extractPropsFromVNodeData(data, Ctor, tag) {\r\n        // we are only extracting raw values here.\r\n        // validation and default values are handled in the child\r\n        // component itself.\r\n        var propOptions = Ctor.options.props\r\n        if (isUndef(propOptions)) {\r\n            return\r\n        }\r\n        var res = {}\r\n        var attrs = data.attrs\r\n        var props = data.props\r\n        if (isDef(attrs) || isDef(props)) {\r\n            for (var key in propOptions) {\r\n                var altKey = hyphenate(key)\r\n                checkProp(res, props, key, altKey, true) ||\r\n                    checkProp(res, attrs, key, altKey, false)\r\n            }\r\n        }\r\n        return res\r\n    }\r\n\r\n    function checkProp(res, hash, key, altKey, preserve) {\r\n        if (isDef(hash)) {\r\n            if (hasOwn(hash, key)) {\r\n                res[key] = hash[key]\r\n                if (!preserve) {\r\n                    delete hash[key]\r\n                }\r\n                return true\r\n            } else if (hasOwn(hash, altKey)) {\r\n                res[key] = hash[altKey]\r\n                if (!preserve) {\r\n                    delete hash[altKey]\r\n                }\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    }\r\n\r\n    /*  */\r\n\r\n    // The template compiler attempts to minimize the need for normalization by\r\n    // statically analyzing the template at compile time.\r\n    //\r\n    // For plain HTML markup, normalization can be completely skipped because the\r\n    // generated render function is guaranteed to return Array<VNode>. There are\r\n    // two cases where extra normalization is needed:\r\n\r\n    // 1. When the children contains components - because a functional component\r\n    // may return an Array instead of a single root. In this case, just a simple\r\n    // normalization is needed - if any child is an Array, we flatten the whole\r\n    // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\r\n    // because functional components already normalize their own children.\r\n    function simpleNormalizeChildren(children) {\r\n        for (var i = 0; i < children.length; i++) {\r\n            if (Array.isArray(children[i])) {\r\n                return Array.prototype.concat.apply([], children)\r\n            }\r\n        }\r\n        return children\r\n    }\r\n\r\n    // 2. When the children contains constructs that always generated nested Arrays,\r\n    // e.g. <template>, <slot>, v-for, or when the children is provided by user\r\n    // with hand-written render functions / JSX. In such cases a full normalization\r\n    // is needed to cater to all possible types of children values.\r\n    function normalizeChildren(children) {\r\n        return isPrimitive(children)\r\n            ? [createTextVNode(children)]\r\n            : Array.isArray(children)\r\n                ? normalizeArrayChildren(children)\r\n                : undefined\r\n    }\r\n\r\n    function isTextNode(node) {\r\n        return isDef(node) && isDef(node.text) && isFalse(node.isComment)\r\n    }\r\n\r\n    function normalizeArrayChildren(children, nestedIndex) {\r\n        var res = []\r\n        var i, c, last\r\n        for (i = 0; i < children.length; i++) {\r\n            c = children[i]\r\n            if (isUndef(c) || typeof c === \"boolean\") {\r\n                continue\r\n            }\r\n            last = res[res.length - 1]\r\n            //  nested\r\n            if (Array.isArray(c)) {\r\n                res.push.apply(res, normalizeArrayChildren(c, (nestedIndex || \"\") + \"_\" + i))\r\n            } else if (isPrimitive(c)) {\r\n                if (isTextNode(last)) {\r\n                    // merge adjacent text nodes\r\n                    // this is necessary for SSR hydration because text nodes are\r\n                    // essentially merged when rendered to HTML strings\r\n                    last.text += String(c)\r\n                } else if (c !== \"\") {\r\n                    // convert primitive to vnode\r\n                    res.push(createTextVNode(c))\r\n                }\r\n            } else {\r\n                if (isTextNode(c) && isTextNode(last)) {\r\n                    // merge adjacent text nodes\r\n                    res[res.length - 1] = createTextVNode(last.text + c.text)\r\n                } else {\r\n                    // default key for nested array children (likely generated by v-for)\r\n                    if (\r\n                        isTrue(children._isVList) &&\r\n                        isDef(c.tag) &&\r\n                        isUndef(c.key) &&\r\n                        isDef(nestedIndex)\r\n                    ) {\r\n                        c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\"\r\n                    }\r\n                    res.push(c)\r\n                }\r\n            }\r\n        }\r\n        return res\r\n    }\r\n\r\n    /*  */\r\n\r\n    function ensureCtor(comp, base) {\r\n        if (comp.__esModule && comp.default) {\r\n            comp = comp.default\r\n        }\r\n        return isObject(comp) ? base.extend(comp) : comp\r\n    }\r\n\r\n    function createAsyncPlaceholder(factory, data, context, children, tag) {\r\n        var node = createEmptyVNode()\r\n        node.asyncFactory = factory\r\n        node.asyncMeta = {\r\n            data: data,\r\n            context: context,\r\n            children: children,\r\n            tag: tag\r\n        }\r\n        return node\r\n    }\r\n\r\n    function resolveAsyncComponent(factory, baseCtor, context) {\r\n        if (isTrue(factory.error) && isDef(factory.errorComp)) {\r\n            return factory.errorComp\r\n        }\r\n\r\n        if (isDef(factory.resolved)) {\r\n            return factory.resolved\r\n        }\r\n\r\n        if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\r\n            return factory.loadingComp\r\n        }\r\n\r\n        if (isDef(factory.contexts)) {\r\n            // already pending\r\n            factory.contexts.push(context)\r\n        } else {\r\n            var contexts = (factory.contexts = [context])\r\n            var sync = true\r\n\r\n            var forceRender = function() {\r\n                for (var i = 0, l = contexts.length; i < l; i++) {\r\n                    contexts[i].$forceUpdate()\r\n                }\r\n            }\r\n\r\n            var resolve = once(function(res) {\r\n                // cache resolved\r\n                factory.resolved = ensureCtor(res, baseCtor)\r\n                // invoke callbacks only if this is not a synchronous resolve\r\n                // (async resolves are shimmed as synchronous during SSR)\r\n                if (!sync) {\r\n                    forceRender()\r\n                }\r\n            })\r\n\r\n            var reject = once(function(reason) {\r\n                 false &&\r\n                    false\r\n                if (isDef(factory.errorComp)) {\r\n                    factory.error = true\r\n                    forceRender()\r\n                }\r\n            })\r\n\r\n            var res = factory(resolve, reject)\r\n\r\n            if (isObject(res)) {\r\n                if (typeof res.then === \"function\") {\r\n                    // () => Promise\r\n                    if (isUndef(factory.resolved)) {\r\n                        res.then(resolve, reject)\r\n                    }\r\n                } else if (isDef(res.component) && typeof res.component.then === \"function\") {\r\n                    res.component.then(resolve, reject)\r\n\r\n                    if (isDef(res.error)) {\r\n                        factory.errorComp = ensureCtor(res.error, baseCtor)\r\n                    }\r\n\r\n                    if (isDef(res.loading)) {\r\n                        factory.loadingComp = ensureCtor(res.loading, baseCtor)\r\n                        if (res.delay === 0) {\r\n                            factory.loading = true\r\n                        } else {\r\n                            setTimeout(function() {\r\n                                if (isUndef(factory.resolved) && isUndef(factory.error)) {\r\n                                    factory.loading = true\r\n                                    forceRender()\r\n                                }\r\n                            }, res.delay || 200)\r\n                        }\r\n                    }\r\n\r\n                    if (isDef(res.timeout)) {\r\n                        setTimeout(function() {\r\n                            if (isUndef(factory.resolved)) {\r\n                                reject(null)\r\n                            }\r\n                        }, res.timeout)\r\n                    }\r\n                }\r\n            }\r\n\r\n            sync = false\r\n            // return in case resolved synchronously\r\n            return factory.loading ? factory.loadingComp : factory.resolved\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    function getFirstComponentChild(children) {\r\n        if (Array.isArray(children)) {\r\n            for (var i = 0; i < children.length; i++) {\r\n                var c = children[i]\r\n                if (isDef(c) && isDef(c.componentOptions)) {\r\n                    return c\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /*  */\r\n\r\n    function initEvents(vm) {\r\n        vm._events = Object.create(null)\r\n        vm._hasHookEvent = false\r\n        // init parent attached events\r\n        var listeners = vm.$options._parentListeners\r\n        if (listeners) {\r\n            updateComponentListeners(vm, listeners)\r\n        }\r\n    }\r\n\r\n    var target\r\n\r\n    function add(event, fn, once$$1) {\r\n        if (once$$1) {\r\n            target.$once(event, fn)\r\n        } else {\r\n            target.$on(event, fn)\r\n        }\r\n    }\r\n\r\n    function remove$1(event, fn) {\r\n        target.$off(event, fn)\r\n    }\r\n\r\n    function updateComponentListeners(vm, listeners, oldListeners) {\r\n        target = vm\r\n        updateListeners(listeners, oldListeners || {}, add, remove$1, vm)\r\n    }\r\n\r\n    function eventsMixin(Vue) {\r\n        var hookRE = /^hook:/\r\n        Vue.prototype.$on = function(event, fn) {\r\n            var this$1 = this\r\n\r\n            var vm = this\r\n            if (Array.isArray(event)) {\r\n                for (var i = 0, l = event.length; i < l; i++) {\r\n                    this$1.$on(event[i], fn)\r\n                }\r\n            } else {\r\n                ;(vm._events[event] || (vm._events[event] = [])).push(fn)\r\n                // optimize hook:event cost by using a boolean flag marked at registration\r\n                // instead of a hash lookup\r\n                if (hookRE.test(event)) {\r\n                    vm._hasHookEvent = true\r\n                }\r\n            }\r\n            return vm\r\n        }\r\n\r\n        Vue.prototype.$once = function(event, fn) {\r\n            var vm = this\r\n\r\n            function on() {\r\n                vm.$off(event, on)\r\n                fn.apply(vm, arguments)\r\n            }\r\n            on.fn = fn\r\n            vm.$on(event, on)\r\n            return vm\r\n        }\r\n\r\n        Vue.prototype.$off = function(event, fn) {\r\n            var this$1 = this\r\n\r\n            var vm = this\r\n            // all\r\n            if (!arguments.length) {\r\n                vm._events = Object.create(null)\r\n                return vm\r\n            }\r\n            // array of events\r\n            if (Array.isArray(event)) {\r\n                for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\r\n                    this$1.$off(event[i$1], fn)\r\n                }\r\n                return vm\r\n            }\r\n            // specific event\r\n            var cbs = vm._events[event]\r\n            if (!cbs) {\r\n                return vm\r\n            }\r\n            if (arguments.length === 1) {\r\n                vm._events[event] = null\r\n                return vm\r\n            }\r\n            // specific handler\r\n            var cb\r\n            var i = cbs.length\r\n            while (i--) {\r\n                cb = cbs[i]\r\n                if (cb === fn || cb.fn === fn) {\r\n                    cbs.splice(i, 1)\r\n                    break\r\n                }\r\n            }\r\n            return vm\r\n        }\r\n\r\n        Vue.prototype.$emit = function(event) {\r\n            var vm = this\r\n            var cbs = vm._events[event]\r\n            if (cbs) {\r\n                cbs = cbs.length > 1 ? toArray(cbs) : cbs\r\n                var args = toArray(arguments, 1)\r\n                for (var i = 0, l = cbs.length; i < l; i++) {\r\n                    try {\r\n                        cbs[i].apply(vm, args)\r\n                    } catch (e) {\r\n                        handleError(e, vm, 'event handler for \"' + event + '\"')\r\n                    }\r\n                }\r\n            }\r\n            return vm\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for resolving raw children VNodes into a slot object.\r\n     */\r\n    function resolveSlots(children, context) {\r\n        var slots = {}\r\n        if (!children) {\r\n            return slots\r\n        }\r\n        var defaultSlot = []\r\n        for (var i = 0, l = children.length; i < l; i++) {\r\n            var child = children[i]\r\n            // named slots should only be respected if the vnode was rendered in the\r\n            // same context.\r\n            if (\r\n                (child.context === context || child.functionalContext === context) &&\r\n                child.data &&\r\n                child.data.slot != null\r\n            ) {\r\n                var name = child.data.slot\r\n                var slot = slots[name] || (slots[name] = [])\r\n                if (child.tag === \"template\") {\r\n                    slot.push.apply(slot, child.children)\r\n                } else {\r\n                    slot.push(child)\r\n                }\r\n            } else {\r\n                defaultSlot.push(child)\r\n            }\r\n        }\r\n        // ignore whitespace\r\n        if (!defaultSlot.every(isWhitespace)) {\r\n            slots.default = defaultSlot\r\n        }\r\n        return slots\r\n    }\r\n\r\n    function isWhitespace(node) {\r\n        return node.isComment || node.text === \" \"\r\n    }\r\n\r\n    function resolveScopedSlots(\r\n        fns, // see flow/vnode\r\n        res\r\n    ) {\r\n        res = res || {}\r\n        for (var i = 0; i < fns.length; i++) {\r\n            if (Array.isArray(fns[i])) {\r\n                resolveScopedSlots(fns[i], res)\r\n            } else {\r\n                res[fns[i].key] = fns[i].fn\r\n            }\r\n        }\r\n        return res\r\n    }\r\n\r\n    /*  */\r\n\r\n    var activeInstance = null\r\n\r\n    function initLifecycle(vm) {\r\n        var options = vm.$options\r\n\r\n        // locate first non-abstract parent\r\n        var parent = options.parent\r\n        if (parent && !options.abstract) {\r\n            while (parent.$options.abstract && parent.$parent) {\r\n                parent = parent.$parent\r\n            }\r\n            parent.$children.push(vm)\r\n        }\r\n\r\n        vm.$parent = parent\r\n        vm.$root = parent ? parent.$root : vm\r\n\r\n        vm.$children = []\r\n        vm.$refs = {}\r\n\r\n        vm._watcher = null\r\n        vm._inactive = null\r\n        vm._directInactive = false\r\n        vm._isMounted = false\r\n        vm._isDestroyed = false\r\n        vm._isBeingDestroyed = false\r\n    }\r\n\r\n    function lifecycleMixin(Vue) {\r\n        Vue.prototype._update = function(vnode, hydrating) {\r\n            var vm = this\r\n            if (vm._isMounted) {\r\n                callHook(vm, \"beforeUpdate\")\r\n            }\r\n            var prevEl = vm.$el\r\n            var prevVnode = vm._vnode\r\n            var prevActiveInstance = activeInstance\r\n            activeInstance = vm\r\n            vm._vnode = vnode\r\n            // Vue.prototype.__patch__ is injected in entry points\r\n            // based on the rendering backend used.\r\n            if (!prevVnode) {\r\n                // initial render\r\n                vm.$el = vm.__patch__(\r\n                    vm.$el,\r\n                    vnode,\r\n                    hydrating,\r\n                    false /* removeOnly */,\r\n                    vm.$options._parentElm,\r\n                    vm.$options._refElm\r\n                )\r\n                // no need for the ref nodes after initial patch\r\n                // this prevents keeping a detached DOM tree in memory (#5851)\r\n                vm.$options._parentElm = vm.$options._refElm = null\r\n            } else {\r\n                // updates\r\n                vm.$el = vm.__patch__(prevVnode, vnode)\r\n            }\r\n            activeInstance = prevActiveInstance\r\n            // update __vue__ reference\r\n            if (prevEl) {\r\n                prevEl.__vue__ = null\r\n            }\r\n            if (vm.$el) {\r\n                vm.$el.__vue__ = vm\r\n            }\r\n            // if parent is an HOC, update its $el as well\r\n            if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\r\n                vm.$parent.$el = vm.$el\r\n            }\r\n            // updated hook is called by the scheduler to ensure that children are\r\n            // updated in a parent's updated hook.\r\n        }\r\n\r\n        Vue.prototype.$forceUpdate = function() {\r\n            var vm = this\r\n            if (vm._watcher) {\r\n                vm._watcher.update()\r\n            }\r\n        }\r\n\r\n        Vue.prototype.$destroy = function() {\r\n            var vm = this\r\n            if (vm._isBeingDestroyed) {\r\n                return\r\n            }\r\n            callHook(vm, \"beforeDestroy\")\r\n            vm._isBeingDestroyed = true\r\n            // remove self from parent\r\n            var parent = vm.$parent\r\n            if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\r\n                remove(parent.$children, vm)\r\n            }\r\n            // teardown watchers\r\n            if (vm._watcher) {\r\n                vm._watcher.teardown()\r\n            }\r\n            var i = vm._watchers.length\r\n            while (i--) {\r\n                vm._watchers[i].teardown()\r\n            }\r\n            // remove reference from data ob\r\n            // frozen object may not have observer.\r\n            if (vm._data.__ob__) {\r\n                vm._data.__ob__.vmCount--\r\n            }\r\n            // call the last hook...\r\n            vm._isDestroyed = true\r\n            // invoke destroy hooks on current rendered tree\r\n            vm.__patch__(vm._vnode, null)\r\n            // fire destroyed hook\r\n            callHook(vm, \"destroyed\")\r\n            // turn off all instance listeners.\r\n            vm.$off()\r\n            // remove __vue__ reference\r\n            if (vm.$el) {\r\n                vm.$el.__vue__ = null\r\n            }\r\n        }\r\n    }\r\n\r\n    function mountComponent(vm, el, hydrating) {\r\n        vm.$el = el\r\n        if (!vm.$options.render) {\r\n            vm.$options.render = createEmptyVNode\r\n        }\r\n        callHook(vm, \"beforeMount\")\r\n\r\n        var updateComponent\r\n        /* istanbul ignore if */\r\n        if (false) {} else {\r\n            updateComponent = function() {\r\n                vm._update(vm._render(), hydrating)\r\n            }\r\n        }\r\n\r\n        vm._watcher = new Watcher(vm, updateComponent, noop)\r\n        hydrating = false\r\n\r\n        // manually mounted instance, call mounted on self\r\n        // mounted is called for render-created child components in its inserted hook\r\n        if (vm.$vnode == null) {\r\n            vm._isMounted = true\r\n            callHook(vm, \"mounted\")\r\n        }\r\n        return vm\r\n    }\r\n\r\n    function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {\r\n        var hasChildren = !!(\r\n            renderChildren || // has new static slots\r\n            vm.$options._renderChildren || // has old static slots\r\n            parentVnode.data.scopedSlots || // has new scoped slots\r\n            vm.$scopedSlots !== emptyObject\r\n        ) // has old scoped slots\r\n\r\n        vm.$options._parentVnode = parentVnode\r\n        vm.$vnode = parentVnode // update vm's placeholder node without re-render\r\n\r\n        if (vm._vnode) {\r\n            // update child tree's parent\r\n            vm._vnode.parent = parentVnode\r\n        }\r\n        vm.$options._renderChildren = renderChildren\r\n\r\n        // update $attrs and $listensers hash\r\n        // these are also reactive so they may trigger child update if the child\r\n        // used them during render\r\n        vm.$attrs = parentVnode.data && parentVnode.data.attrs\r\n        vm.$listeners = listeners\r\n\r\n        // update props\r\n        if (propsData && vm.$options.props) {\r\n            observerState.shouldConvert = false\r\n            var props = vm._props\r\n            var propKeys = vm.$options._propKeys || []\r\n            for (var i = 0; i < propKeys.length; i++) {\r\n                var key = propKeys[i]\r\n                props[key] = validateProp(key, vm.$options.props, propsData, vm)\r\n            }\r\n            observerState.shouldConvert = true\r\n            // keep a copy of raw propsData\r\n            vm.$options.propsData = propsData\r\n        }\r\n\r\n        // update listeners\r\n        if (listeners) {\r\n            var oldListeners = vm.$options._parentListeners\r\n            vm.$options._parentListeners = listeners\r\n            updateComponentListeners(vm, listeners, oldListeners)\r\n        }\r\n        // resolve slots + force update if has children\r\n        if (hasChildren) {\r\n            vm.$slots = resolveSlots(renderChildren, parentVnode.context)\r\n            vm.$forceUpdate()\r\n        }\r\n    }\r\n\r\n    function isInInactiveTree(vm) {\r\n        while (vm && (vm = vm.$parent)) {\r\n            if (vm._inactive) {\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    }\r\n\r\n    function activateChildComponent(vm, direct) {\r\n        if (direct) {\r\n            vm._directInactive = false\r\n            if (isInInactiveTree(vm)) {\r\n                return\r\n            }\r\n        } else if (vm._directInactive) {\r\n            return\r\n        }\r\n        if (vm._inactive || vm._inactive === null) {\r\n            vm._inactive = false\r\n            for (var i = 0; i < vm.$children.length; i++) {\r\n                activateChildComponent(vm.$children[i])\r\n            }\r\n            callHook(vm, \"activated\")\r\n        }\r\n    }\r\n\r\n    function deactivateChildComponent(vm, direct) {\r\n        if (direct) {\r\n            vm._directInactive = true\r\n            if (isInInactiveTree(vm)) {\r\n                return\r\n            }\r\n        }\r\n        if (!vm._inactive) {\r\n            vm._inactive = true\r\n            for (var i = 0; i < vm.$children.length; i++) {\r\n                deactivateChildComponent(vm.$children[i])\r\n            }\r\n            callHook(vm, \"deactivated\")\r\n        }\r\n    }\r\n\r\n    function callHook(vm, hook) {\r\n        var handlers = vm.$options[hook]\r\n        if (handlers) {\r\n            for (var i = 0, j = handlers.length; i < j; i++) {\r\n                try {\r\n                    handlers[i].call(vm)\r\n                } catch (e) {\r\n                    handleError(e, vm, hook + \" hook\")\r\n                }\r\n            }\r\n        }\r\n        if (vm._hasHookEvent) {\r\n            vm.$emit(\"hook:\" + hook)\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    var MAX_UPDATE_COUNT = 100\r\n\r\n    var queue = []\r\n    var activatedChildren = []\r\n    var has = {}\r\n    var circular = {}\r\n    var waiting = false\r\n    var flushing = false\r\n    var index = 0\r\n\r\n    /**\r\n     * Reset the scheduler's state.\r\n     */\r\n    function resetSchedulerState() {\r\n        index = queue.length = activatedChildren.length = 0\r\n        has = {}\r\n        waiting = flushing = false\r\n    }\r\n\r\n    /**\r\n     * Flush both queues and run the watchers.\r\n     */\r\n    function flushSchedulerQueue() {\r\n        flushing = true\r\n        var watcher, id\r\n\r\n        // Sort queue before flush.\r\n        // This ensures that:\r\n        // 1. Components are updated from parent to child. (because parent is always\r\n        //    created before the child)\r\n        // 2. A component's user watchers are run before its render watcher (because\r\n        //    user watchers are created before the render watcher)\r\n        // 3. If a component is destroyed during a parent component's watcher run,\r\n        //    its watchers can be skipped.\r\n        queue.sort(function(a, b) {\r\n            return a.id - b.id\r\n        })\r\n\r\n        // do not cache length because more watchers might be pushed\r\n        // as we run existing watchers\r\n        for (index = 0; index < queue.length; index++) {\r\n            watcher = queue[index]\r\n            id = watcher.id\r\n            has[id] = null\r\n            watcher.run()\r\n            // in dev build, check and stop circular updates.\r\n            if (false) {}\r\n        }\r\n\r\n        // keep copies of post queues before resetting state\r\n        var activatedQueue = activatedChildren.slice()\r\n        var updatedQueue = queue.slice()\r\n\r\n        resetSchedulerState()\r\n\r\n        // call component updated and activated hooks\r\n        callActivatedHooks(activatedQueue)\r\n        callUpdatedHooks(updatedQueue)\r\n\r\n        // devtool hook\r\n        /* istanbul ignore if */\r\n        if (devtools && config.devtools) {\r\n            devtools.emit(\"flush\")\r\n        }\r\n    }\r\n\r\n    function callUpdatedHooks(queue) {\r\n        var i = queue.length\r\n        while (i--) {\r\n            var watcher = queue[i]\r\n            var vm = watcher.vm\r\n            if (vm._watcher === watcher && vm._isMounted) {\r\n                callHook(vm, \"updated\")\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Queue a kept-alive component that was activated during patch.\r\n     * The queue will be processed after the entire tree has been patched.\r\n     */\r\n    function queueActivatedComponent(vm) {\r\n        // setting _inactive to false here so that a render function can\r\n        // rely on checking whether it's in an inactive tree (e.g. router-view)\r\n        vm._inactive = false\r\n        activatedChildren.push(vm)\r\n    }\r\n\r\n    function callActivatedHooks(queue) {\r\n        for (var i = 0; i < queue.length; i++) {\r\n            queue[i]._inactive = true\r\n            activateChildComponent(queue[i], true /* true */)\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Push a watcher into the watcher queue.\r\n     * Jobs with duplicate IDs will be skipped unless it's\r\n     * pushed when the queue is being flushed.\r\n     */\r\n    function queueWatcher(watcher) {\r\n        var id = watcher.id\r\n        if (has[id] == null) {\r\n            has[id] = true\r\n            if (!flushing) {\r\n                queue.push(watcher)\r\n            } else {\r\n                // if already flushing, splice the watcher based on its id\r\n                // if already past its id, it will be run next immediately.\r\n                var i = queue.length - 1\r\n                while (i > index && queue[i].id > watcher.id) {\r\n                    i--\r\n                }\r\n                queue.splice(i + 1, 0, watcher)\r\n            }\r\n            // queue the flush\r\n            if (!waiting) {\r\n                waiting = true\r\n                nextTick(flushSchedulerQueue)\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    var uid$2 = 0\r\n\r\n    /**\r\n     * A watcher parses an expression, collects dependencies,\r\n     * and fires callback when the expression value changes.\r\n     * This is used for both the $watch() api and directives.\r\n     */\r\n    var Watcher = function Watcher(vm, expOrFn, cb, options) {\r\n        this.vm = vm\r\n        vm._watchers.push(this)\r\n        // options\r\n        if (options) {\r\n            this.deep = !!options.deep\r\n            this.user = !!options.user\r\n            this.lazy = !!options.lazy\r\n            this.sync = !!options.sync\r\n        } else {\r\n            this.deep = this.user = this.lazy = this.sync = false\r\n        }\r\n        this.cb = cb\r\n        this.id = ++uid$2 // uid for batching\r\n        this.active = true\r\n        this.dirty = this.lazy // for lazy watchers\r\n        this.deps = []\r\n        this.newDeps = []\r\n        this.depIds = new _Set()\r\n        this.newDepIds = new _Set()\r\n        this.expression = \"\"\r\n        // parse expression for getter\r\n        if (typeof expOrFn === \"function\") {\r\n            this.getter = expOrFn\r\n        } else {\r\n            this.getter = parsePath(expOrFn)\r\n            if (!this.getter) {\r\n                this.getter = function() {}\r\n                 false &&\r\n                    false\r\n            }\r\n        }\r\n        this.value = this.lazy ? undefined : this.get()\r\n    }\r\n\r\n    /**\r\n     * Evaluate the getter, and re-collect dependencies.\r\n     */\r\n    Watcher.prototype.get = function get() {\r\n        pushTarget(this)\r\n        var value\r\n        var vm = this.vm\r\n        try {\r\n            value = this.getter.call(vm, vm)\r\n        } catch (e) {\r\n            if (this.user) {\r\n                handleError(e, vm, 'getter for watcher \"' + this.expression + '\"')\r\n            } else {\r\n                throw e\r\n            }\r\n        } finally {\r\n            // \"touch\" every property so they are all tracked as\r\n            // dependencies for deep watching\r\n            if (this.deep) {\r\n                traverse(value)\r\n            }\r\n            popTarget()\r\n            this.cleanupDeps()\r\n        }\r\n        return value\r\n    }\r\n\r\n    /**\r\n     * Add a dependency to this directive.\r\n     */\r\n    Watcher.prototype.addDep = function addDep(dep) {\r\n        var id = dep.id\r\n        if (!this.newDepIds.has(id)) {\r\n            this.newDepIds.add(id)\r\n            this.newDeps.push(dep)\r\n            if (!this.depIds.has(id)) {\r\n                dep.addSub(this)\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Clean up for dependency collection.\r\n     */\r\n    Watcher.prototype.cleanupDeps = function cleanupDeps() {\r\n        var this$1 = this\r\n\r\n        var i = this.deps.length\r\n        while (i--) {\r\n            var dep = this$1.deps[i]\r\n            if (!this$1.newDepIds.has(dep.id)) {\r\n                dep.removeSub(this$1)\r\n            }\r\n        }\r\n        var tmp = this.depIds\r\n        this.depIds = this.newDepIds\r\n        this.newDepIds = tmp\r\n        this.newDepIds.clear()\r\n        tmp = this.deps\r\n        this.deps = this.newDeps\r\n        this.newDeps = tmp\r\n        this.newDeps.length = 0\r\n    }\r\n\r\n    /**\r\n     * Subscriber interface.\r\n     * Will be called when a dependency changes.\r\n     */\r\n    Watcher.prototype.update = function update() {\r\n        /* istanbul ignore else */\r\n        if (this.lazy) {\r\n            this.dirty = true\r\n        } else if (this.sync) {\r\n            this.run()\r\n        } else {\r\n            queueWatcher(this)\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Scheduler job interface.\r\n     * Will be called by the scheduler.\r\n     */\r\n    Watcher.prototype.run = function run() {\r\n        if (this.active) {\r\n            var value = this.get()\r\n            if (\r\n                value !== this.value ||\r\n                // Deep watchers and watchers on Object/Arrays should fire even\r\n                // when the value is the same, because the value may\r\n                // have mutated.\r\n                isObject(value) ||\r\n                this.deep\r\n            ) {\r\n                // set new value\r\n                var oldValue = this.value\r\n                this.value = value\r\n                if (this.user) {\r\n                    try {\r\n                        this.cb.call(this.vm, value, oldValue)\r\n                    } catch (e) {\r\n                        handleError(e, this.vm, 'callback for watcher \"' + this.expression + '\"')\r\n                    }\r\n                } else {\r\n                    this.cb.call(this.vm, value, oldValue)\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Evaluate the value of the watcher.\r\n     * This only gets called for lazy watchers.\r\n     */\r\n    Watcher.prototype.evaluate = function evaluate() {\r\n        this.value = this.get()\r\n        this.dirty = false\r\n    }\r\n\r\n    /**\r\n     * Depend on all deps collected by this watcher.\r\n     */\r\n    Watcher.prototype.depend = function depend() {\r\n        var this$1 = this\r\n\r\n        var i = this.deps.length\r\n        while (i--) {\r\n            this$1.deps[i].depend()\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Remove self from all dependencies' subscriber list.\r\n     */\r\n    Watcher.prototype.teardown = function teardown() {\r\n        var this$1 = this\r\n\r\n        if (this.active) {\r\n            // remove self from vm's watcher list\r\n            // this is a somewhat expensive operation so we skip it\r\n            // if the vm is being destroyed.\r\n            if (!this.vm._isBeingDestroyed) {\r\n                remove(this.vm._watchers, this)\r\n            }\r\n            var i = this.deps.length\r\n            while (i--) {\r\n                this$1.deps[i].removeSub(this$1)\r\n            }\r\n            this.active = false\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Recursively traverse an object to evoke all converted\r\n     * getters, so that every nested property inside the object\r\n     * is collected as a \"deep\" dependency.\r\n     */\r\n    var seenObjects = new _Set()\r\n\r\n    function traverse(val) {\r\n        seenObjects.clear()\r\n        _traverse(val, seenObjects)\r\n    }\r\n\r\n    function _traverse(val, seen) {\r\n        var i, keys\r\n        var isA = Array.isArray(val)\r\n        if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {\r\n            return\r\n        }\r\n        if (val.__ob__) {\r\n            var depId = val.__ob__.dep.id\r\n            if (seen.has(depId)) {\r\n                return\r\n            }\r\n            seen.add(depId)\r\n        }\r\n        if (isA) {\r\n            i = val.length\r\n            while (i--) {\r\n                _traverse(val[i], seen)\r\n            }\r\n        } else {\r\n            keys = Object.keys(val)\r\n            i = keys.length\r\n            while (i--) {\r\n                _traverse(val[keys[i]], seen)\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    var sharedPropertyDefinition = {\r\n        enumerable: true,\r\n        configurable: true,\r\n        get: noop,\r\n        set: noop\r\n    }\r\n\r\n    function proxy(target, sourceKey, key) {\r\n        sharedPropertyDefinition.get = function proxyGetter() {\r\n            return this[sourceKey][key]\r\n        }\r\n        sharedPropertyDefinition.set = function proxySetter(val) {\r\n            this[sourceKey][key] = val\r\n        }\r\n        Object.defineProperty(target, key, sharedPropertyDefinition)\r\n    }\r\n\r\n    function initState(vm) {\r\n        vm._watchers = []\r\n        var opts = vm.$options\r\n        if (opts.props) {\r\n            initProps(vm, opts.props)\r\n        }\r\n        if (opts.methods) {\r\n            initMethods(vm, opts.methods)\r\n        }\r\n        if (opts.data) {\r\n            initData(vm)\r\n        } else {\r\n            observe((vm._data = {}), true /* asRootData */)\r\n        }\r\n        if (opts.computed) {\r\n            initComputed(vm, opts.computed)\r\n        }\r\n        if (opts.watch && opts.watch !== nativeWatch) {\r\n            initWatch(vm, opts.watch)\r\n        }\r\n    }\r\n\r\n    function checkOptionType(vm, name) {\r\n        var option = vm.$options[name]\r\n        if (!isPlainObject(option)) {\r\n            warn('component option \"' + name + '\" should be an object.', vm)\r\n        }\r\n    }\r\n\r\n    function initProps(vm, propsOptions) {\r\n        var propsData = vm.$options.propsData || {}\r\n        var props = (vm._props = {})\r\n        // cache prop keys so that future props updates can iterate using Array\r\n        // instead of dynamic object key enumeration.\r\n        var keys = (vm.$options._propKeys = [])\r\n        var isRoot = !vm.$parent\r\n        // root instance props should be converted\r\n        observerState.shouldConvert = isRoot\r\n        var loop = function(key) {\r\n            keys.push(key)\r\n            var value = validateProp(key, propsOptions, propsData, vm)\r\n            /* istanbul ignore else */\r\n            {\r\n                defineReactive$$1(props, key, value)\r\n            }\r\n            // static props are already proxied on the component's prototype\r\n            // during Vue.extend(). We only need to proxy props defined at\r\n            // instantiation here.\r\n            if (!(key in vm)) {\r\n                proxy(vm, \"_props\", key)\r\n            }\r\n        }\r\n\r\n        for (var key in propsOptions) loop(key)\r\n        observerState.shouldConvert = true\r\n    }\r\n\r\n    function initData(vm) {\r\n        var data = vm.$options.data\r\n        data = vm._data = typeof data === \"function\" ? getData(data, vm) : data || {}\r\n        if (!isPlainObject(data)) {\r\n            data = {}\r\n             false &&\r\n                false\r\n        }\r\n        // proxy data on instance\r\n        var keys = Object.keys(data)\r\n        var props = vm.$options.props\r\n        var methods = vm.$options.methods\r\n        var i = keys.length\r\n        while (i--) {\r\n            var key = keys[i]\r\n            if (props && hasOwn(props, key)) {\r\n                 false &&\r\n                    false\r\n            } else if (!isReserved(key)) {\r\n                proxy(vm, \"_data\", key)\r\n            }\r\n        }\r\n        // observe data\r\n        observe(data, true /* asRootData */)\r\n    }\r\n\r\n    function getData(data, vm) {\r\n        try {\r\n            return data.call(vm)\r\n        } catch (e) {\r\n            handleError(e, vm, \"data()\")\r\n            return {}\r\n        }\r\n    }\r\n\r\n    var computedWatcherOptions = {\r\n        lazy: true\r\n    }\r\n\r\n    function initComputed(vm, computed) {\r\n         false && false\r\n        var watchers = (vm._computedWatchers = Object.create(null))\r\n\r\n        for (var key in computed) {\r\n            var userDef = computed[key]\r\n            var getter = typeof userDef === \"function\" ? userDef : userDef.get\r\n            watchers[key] = new Watcher(vm, getter, noop, computedWatcherOptions)\r\n\r\n            // component-defined computed properties are already defined on the\r\n            // component prototype. We only need to define computed properties defined\r\n            // at instantiation here.\r\n            if (!(key in vm)) {\r\n                defineComputed(vm, key, userDef)\r\n            } else {\r\n            }\r\n        }\r\n    }\r\n\r\n    function defineComputed(target, key, userDef) {\r\n        if (typeof userDef === \"function\") {\r\n            sharedPropertyDefinition.get = createComputedGetter(key)\r\n            sharedPropertyDefinition.set = noop\r\n        } else {\r\n            sharedPropertyDefinition.get = userDef.get\r\n                ? userDef.cache !== false\r\n                    ? createComputedGetter(key)\r\n                    : userDef.get\r\n                : noop\r\n            sharedPropertyDefinition.set = userDef.set ? userDef.set : noop\r\n        }\r\n        Object.defineProperty(target, key, sharedPropertyDefinition)\r\n    }\r\n\r\n    function createComputedGetter(key) {\r\n        return function computedGetter() {\r\n            var watcher = this._computedWatchers && this._computedWatchers[key]\r\n            if (watcher) {\r\n                if (watcher.dirty) {\r\n                    watcher.evaluate()\r\n                }\r\n                if (Dep.target) {\r\n                    watcher.depend()\r\n                }\r\n                return watcher.value\r\n            }\r\n        }\r\n    }\r\n\r\n    function initMethods(vm, methods) {\r\n         false && false\r\n        var props = vm.$options.props\r\n        for (var key in methods) {\r\n            vm[key] = methods[key] == null ? noop : bind(methods[key], vm)\r\n        }\r\n    }\r\n\r\n    function initWatch(vm, watch) {\r\n         false && false\r\n        for (var key in watch) {\r\n            var handler = watch[key]\r\n            if (Array.isArray(handler)) {\r\n                for (var i = 0; i < handler.length; i++) {\r\n                    createWatcher(vm, key, handler[i])\r\n                }\r\n            } else {\r\n                createWatcher(vm, key, handler)\r\n            }\r\n        }\r\n    }\r\n\r\n    function createWatcher(vm, keyOrFn, handler, options) {\r\n        if (isPlainObject(handler)) {\r\n            options = handler\r\n            handler = handler.handler\r\n        }\r\n        if (typeof handler === \"string\") {\r\n            handler = vm[handler]\r\n        }\r\n        return vm.$watch(keyOrFn, handler, options)\r\n    }\r\n\r\n    function stateMixin(Vue) {\r\n        // flow somehow has problems with directly declared definition object\r\n        // when using Object.defineProperty, so we have to procedurally build up\r\n        // the object here.\r\n        var dataDef = {}\r\n        dataDef.get = function() {\r\n            return this._data\r\n        }\r\n        var propsDef = {}\r\n        propsDef.get = function() {\r\n            return this._props\r\n        }\r\n        Object.defineProperty(Vue.prototype, \"$data\", dataDef)\r\n        Object.defineProperty(Vue.prototype, \"$props\", propsDef)\r\n\r\n        Vue.prototype.$set = set\r\n        Vue.prototype.$delete = del\r\n\r\n        Vue.prototype.$watch = function(expOrFn, cb, options) {\r\n            var vm = this\r\n            if (isPlainObject(cb)) {\r\n                return createWatcher(vm, expOrFn, cb, options)\r\n            }\r\n            options = options || {}\r\n            options.user = true\r\n            var watcher = new Watcher(vm, expOrFn, cb, options)\r\n            if (options.immediate) {\r\n                cb.call(vm, watcher.value)\r\n            }\r\n            return function unwatchFn() {\r\n                watcher.teardown()\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    function initProvide(vm) {\r\n        var provide = vm.$options.provide\r\n        if (provide) {\r\n            vm._provided = typeof provide === \"function\" ? provide.call(vm) : provide\r\n        }\r\n    }\r\n\r\n    function initInjections(vm) {\r\n        var result = resolveInject(vm.$options.inject, vm)\r\n        if (result) {\r\n            observerState.shouldConvert = false\r\n            Object.keys(result).forEach(function(key) {\r\n                /* istanbul ignore else */\r\n                {\r\n                    defineReactive$$1(vm, key, result[key])\r\n                }\r\n            })\r\n            observerState.shouldConvert = true\r\n        }\r\n    }\r\n\r\n    function resolveInject(inject, vm) {\r\n        if (inject) {\r\n            // inject is :any because flow is not smart enough to figure out cached\r\n            var result = Object.create(null)\r\n            var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject)\r\n\r\n            for (var i = 0; i < keys.length; i++) {\r\n                var key = keys[i]\r\n                var provideKey = inject[key]\r\n                var source = vm\r\n                while (source) {\r\n                    if (source._provided && provideKey in source._provided) {\r\n                        result[key] = source._provided[provideKey]\r\n                        break\r\n                    }\r\n                    source = source.$parent\r\n                }\r\n                if (false) {}\r\n            }\r\n            return result\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    function createFunctionalComponent(Ctor, propsData, data, context, children) {\r\n        var props = {}\r\n        var propOptions = Ctor.options.props\r\n        if (isDef(propOptions)) {\r\n            for (var key in propOptions) {\r\n                props[key] = validateProp(key, propOptions, propsData || {})\r\n            }\r\n        } else {\r\n            if (isDef(data.attrs)) {\r\n                mergeProps(props, data.attrs)\r\n            }\r\n            if (isDef(data.props)) {\r\n                mergeProps(props, data.props)\r\n            }\r\n        }\r\n        // ensure the createElement function in functional components\r\n        // gets a unique context - this is necessary for correct named slot check\r\n        var _context = Object.create(context)\r\n        var h = function(a, b, c, d) {\r\n            return createElement(_context, a, b, c, d, true)\r\n        }\r\n        var vnode = Ctor.options.render.call(null, h, {\r\n            data: data,\r\n            props: props,\r\n            children: children,\r\n            parent: context,\r\n            listeners: data.on || {},\r\n            injections: resolveInject(Ctor.options.inject, context),\r\n            slots: function() {\r\n                return resolveSlots(children, context)\r\n            }\r\n        })\r\n        if (vnode instanceof VNode) {\r\n            vnode.functionalContext = context\r\n            vnode.functionalOptions = Ctor.options\r\n            if (data.slot) {\r\n                ;(vnode.data || (vnode.data = {})).slot = data.slot\r\n            }\r\n        }\r\n        return vnode\r\n    }\r\n\r\n    function mergeProps(to, from) {\r\n        for (var key in from) {\r\n            to[camelize(key)] = from[key]\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    // hooks to be invoked on component VNodes during patch\r\n    var componentVNodeHooks = {\r\n        init: function init(vnode, hydrating, parentElm, refElm) {\r\n            if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {\r\n                var child = (vnode.componentInstance = createComponentInstanceForVnode(\r\n                    vnode,\r\n                    activeInstance,\r\n                    parentElm,\r\n                    refElm\r\n                ))\r\n                child.$mount(hydrating ? vnode.elm : undefined, hydrating)\r\n            } else if (vnode.data.keepAlive) {\r\n                // kept-alive components, treat as a patch\r\n                var mountedNode = vnode // work around flow\r\n                componentVNodeHooks.prepatch(mountedNode, mountedNode)\r\n            }\r\n        },\r\n\r\n        prepatch: function prepatch(oldVnode, vnode) {\r\n            var options = vnode.componentOptions\r\n            var child = (vnode.componentInstance = oldVnode.componentInstance)\r\n            updateChildComponent(\r\n                child,\r\n                options.propsData, // updated props\r\n                options.listeners, // updated listeners\r\n                vnode, // new parent vnode\r\n                options.children // new children\r\n            )\r\n        },\r\n\r\n        insert: function insert(vnode) {\r\n            var context = vnode.context\r\n            var componentInstance = vnode.componentInstance\r\n\r\n            if (!componentInstance._isMounted) {\r\n                componentInstance._isMounted = true\r\n                callHook(componentInstance, \"mounted\")\r\n            }\r\n            if (vnode.data.keepAlive) {\r\n                if (context._isMounted) {\r\n                    // vue-router#1212\r\n                    // During updates, a kept-alive component's child components may\r\n                    // change, so directly walking the tree here may call activated hooks\r\n                    // on incorrect children. Instead we push them into a queue which will\r\n                    // be processed after the whole patch process ended.\r\n                    queueActivatedComponent(componentInstance)\r\n                } else {\r\n                    activateChildComponent(componentInstance, true /* direct */)\r\n                }\r\n            }\r\n        },\r\n\r\n        destroy: function destroy(vnode) {\r\n            var componentInstance = vnode.componentInstance\r\n            if (!componentInstance._isDestroyed) {\r\n                if (!vnode.data.keepAlive) {\r\n                    componentInstance.$destroy()\r\n                } else {\r\n                    deactivateChildComponent(componentInstance, true /* direct */)\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    var hooksToMerge = Object.keys(componentVNodeHooks)\r\n\r\n    function createComponent(Ctor, data, context, children, tag) {\r\n        if (isUndef(Ctor)) {\r\n            return\r\n        }\r\n\r\n        var baseCtor = context.$options._base\r\n\r\n        // plain options object: turn it into a constructor\r\n        if (isObject(Ctor)) {\r\n            Ctor = baseCtor.extend(Ctor)\r\n        }\r\n\r\n        // if at this stage it's not a constructor or an async component factory,\r\n        // reject.\r\n        if (typeof Ctor !== \"function\") {\r\n            return\r\n        }\r\n\r\n        // async component\r\n        var asyncFactory\r\n        if (isUndef(Ctor.cid)) {\r\n            asyncFactory = Ctor\r\n            Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context)\r\n            if (Ctor === undefined) {\r\n                // return a placeholder node for async component, which is rendered\r\n                // as a comment node but preserves all the raw information for the node.\r\n                // the information will be used for async server-rendering and hydration.\r\n                return createAsyncPlaceholder(asyncFactory, data, context, children, tag)\r\n            }\r\n        }\r\n\r\n        data = data || {}\r\n\r\n        // resolve constructor options in case global mixins are applied after\r\n        // component constructor creation\r\n        resolveConstructorOptions(Ctor)\r\n\r\n        // transform component v-model data into props & events\r\n        if (isDef(data.model)) {\r\n            transformModel(Ctor.options, data)\r\n        }\r\n\r\n        // extract props\r\n        var propsData = extractPropsFromVNodeData(data, Ctor, tag)\r\n\r\n        // functional component\r\n        if (isTrue(Ctor.options.functional)) {\r\n            return createFunctionalComponent(Ctor, propsData, data, context, children)\r\n        }\r\n\r\n        // keep listeners\r\n        var listeners = data.on\r\n\r\n        if (isTrue(Ctor.options.abstract)) {\r\n            // abstract components do not keep anything\r\n            // other than props & listeners & slot\r\n\r\n            // work around flow\r\n            var slot = data.slot\r\n            data = {}\r\n            if (slot) {\r\n                data.slot = slot\r\n            }\r\n        }\r\n\r\n        // merge component management hooks onto the placeholder node\r\n        mergeHooks(data)\r\n\r\n        // return a placeholder vnode\r\n        var name = Ctor.options.name || tag\r\n        var vnode = new VNode(\r\n            \"vue-component-\" + Ctor.cid + (name ? \"-\" + name : \"\"),\r\n            data,\r\n            undefined,\r\n            undefined,\r\n            undefined,\r\n            context,\r\n            {\r\n                Ctor: Ctor,\r\n                propsData: propsData,\r\n                listeners: listeners,\r\n                tag: tag,\r\n                children: children\r\n            },\r\n            asyncFactory\r\n        )\r\n        return vnode\r\n    }\r\n\r\n    function createComponentInstanceForVnode(\r\n        vnode, // we know it's MountedComponentVNode but flow doesn't\r\n        parent, // activeInstance in lifecycle state\r\n        parentElm,\r\n        refElm\r\n    ) {\r\n        var vnodeComponentOptions = vnode.componentOptions\r\n        var options = {\r\n            _isComponent: true,\r\n            parent: parent,\r\n            propsData: vnodeComponentOptions.propsData,\r\n            _componentTag: vnodeComponentOptions.tag,\r\n            _parentVnode: vnode,\r\n            _parentListeners: vnodeComponentOptions.listeners,\r\n            _renderChildren: vnodeComponentOptions.children,\r\n            _parentElm: parentElm || null,\r\n            _refElm: refElm || null\r\n        }\r\n        // check inline-template render functions\r\n        var inlineTemplate = vnode.data.inlineTemplate\r\n        if (isDef(inlineTemplate)) {\r\n            options.render = inlineTemplate.render\r\n            options.staticRenderFns = inlineTemplate.staticRenderFns\r\n        }\r\n        return new vnodeComponentOptions.Ctor(options)\r\n    }\r\n\r\n    function mergeHooks(data) {\r\n        if (!data.hook) {\r\n            data.hook = {}\r\n        }\r\n        for (var i = 0; i < hooksToMerge.length; i++) {\r\n            var key = hooksToMerge[i]\r\n            var fromParent = data.hook[key]\r\n            var ours = componentVNodeHooks[key]\r\n            data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours\r\n        }\r\n    }\r\n\r\n    function mergeHook$1(one, two) {\r\n        return function(a, b, c, d) {\r\n            one(a, b, c, d)\r\n            two(a, b, c, d)\r\n        }\r\n    }\r\n\r\n    // transform component v-model info (value and callback) into\r\n    // prop and event handler respectively.\r\n    function transformModel(options, data) {\r\n        var prop = (options.model && options.model.prop) || \"value\"\r\n        var event = (options.model && options.model.event) || \"input\"\r\n        ;(data.props || (data.props = {}))[prop] = data.model.value\r\n        var on = data.on || (data.on = {})\r\n        if (isDef(on[event])) {\r\n            on[event] = [data.model.callback].concat(on[event])\r\n        } else {\r\n            on[event] = data.model.callback\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    var SIMPLE_NORMALIZE = 1\r\n    var ALWAYS_NORMALIZE = 2\r\n\r\n    // wrapper function for providing a more flexible interface\r\n    // without getting yelled at by flow\r\n    function createElement(context, tag, data, children, normalizationType, alwaysNormalize) {\r\n        if (Array.isArray(data) || isPrimitive(data)) {\r\n            normalizationType = children\r\n            children = data\r\n            data = undefined\r\n        }\r\n        if (isTrue(alwaysNormalize)) {\r\n            normalizationType = ALWAYS_NORMALIZE\r\n        }\r\n        return _createElement(context, tag, data, children, normalizationType)\r\n    }\r\n\r\n    function _createElement(context, tag, data, children, normalizationType) {\r\n        if (isDef(data) && isDef(data.__ob__)) {\r\n             false &&\r\n                false\r\n            return createEmptyVNode()\r\n        }\r\n        // object syntax in v-bind\r\n        if (isDef(data) && isDef(data.is)) {\r\n            tag = data.is\r\n        }\r\n        if (!tag) {\r\n            // in case of component :is set to falsy value\r\n            return createEmptyVNode()\r\n        }\r\n        // warn against non-primitive key\r\n        if (\r\n            false\r\n        ) {}\r\n        // support single function children as default scoped slot\r\n        if (Array.isArray(children) && typeof children[0] === \"function\") {\r\n            data = data || {}\r\n            data.scopedSlots = {\r\n                default: children[0]\r\n            }\r\n            children.length = 0\r\n        }\r\n        if (normalizationType === ALWAYS_NORMALIZE) {\r\n            children = normalizeChildren(children)\r\n        } else if (normalizationType === SIMPLE_NORMALIZE) {\r\n            children = simpleNormalizeChildren(children)\r\n        }\r\n        var vnode, ns\r\n        if (typeof tag === \"string\") {\r\n            var Ctor\r\n            ns = config.getTagNamespace(tag)\r\n            if (config.isReservedTag(tag)) {\r\n                // platform built-in elements\r\n                vnode = new VNode(\r\n                    config.parsePlatformTagName(tag),\r\n                    data,\r\n                    children,\r\n                    undefined,\r\n                    undefined,\r\n                    context\r\n                )\r\n            } else if (isDef((Ctor = resolveAsset(context.$options, \"components\", tag)))) {\r\n                // component\r\n                vnode = createComponent(Ctor, data, context, children, tag)\r\n            } else {\r\n                // unknown or unlisted namespaced elements\r\n                // check at runtime because it may get assigned a namespace when its\r\n                // parent normalizes children\r\n                vnode = new VNode(tag, data, children, undefined, undefined, context)\r\n            }\r\n        } else {\r\n            // direct component options / constructor\r\n            vnode = createComponent(tag, data, context, children)\r\n        }\r\n        if (isDef(vnode)) {\r\n            if (ns) {\r\n                applyNS(vnode, ns)\r\n            }\r\n            return vnode\r\n        } else {\r\n            return createEmptyVNode()\r\n        }\r\n    }\r\n\r\n    function applyNS(vnode, ns) {\r\n        vnode.ns = ns\r\n        if (vnode.tag === \"foreignObject\") {\r\n            // use default namespace inside foreignObject\r\n            return\r\n        }\r\n        if (isDef(vnode.children)) {\r\n            for (var i = 0, l = vnode.children.length; i < l; i++) {\r\n                var child = vnode.children[i]\r\n                if (isDef(child.tag) && isUndef(child.ns)) {\r\n                    applyNS(child, ns)\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for rendering v-for lists.\r\n     */\r\n    function renderList(val, render) {\r\n        var ret, i, l, keys, key\r\n        if (Array.isArray(val) || typeof val === \"string\") {\r\n            ret = new Array(val.length)\r\n            for (i = 0, l = val.length; i < l; i++) {\r\n                ret[i] = render(val[i], i)\r\n            }\r\n        } else if (typeof val === \"number\") {\r\n            ret = new Array(val)\r\n            for (i = 0; i < val; i++) {\r\n                ret[i] = render(i + 1, i)\r\n            }\r\n        } else if (isObject(val)) {\r\n            keys = Object.keys(val)\r\n            ret = new Array(keys.length)\r\n            for (i = 0, l = keys.length; i < l; i++) {\r\n                key = keys[i]\r\n                ret[i] = render(val[key], key, i)\r\n            }\r\n        }\r\n        if (isDef(ret)) {\r\n            ret._isVList = true\r\n        }\r\n        return ret\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for rendering <slot>\r\n     */\r\n    function renderSlot(name, fallback, props, bindObject) {\r\n        var scopedSlotFn = this.$scopedSlots[name]\r\n        if (scopedSlotFn) {\r\n            // scoped slot\r\n            props = props || {}\r\n            if (bindObject) {\r\n                props = extend(extend({}, bindObject), props)\r\n            }\r\n            return scopedSlotFn(props) || fallback\r\n        } else {\r\n            var slotNodes = this.$slots[name]\r\n            // warn duplicate slot usage\r\n            if (slotNodes && \"production\" !== \"production\") {\r\n                slotNodes._rendered &&\r\n                    warn(\r\n                        'Duplicate presence of slot \"' +\r\n                            name +\r\n                            '\" found in the same render tree ' +\r\n                            \"- this will likely cause render errors.\",\r\n                        this\r\n                    )\r\n                slotNodes._rendered = true\r\n            }\r\n            return slotNodes || fallback\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for resolving filters\r\n     */\r\n    function resolveFilter(id) {\r\n        return resolveAsset(this.$options, \"filters\", id, true) || identity\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for checking keyCodes from config.\r\n     */\r\n    function checkKeyCodes(eventKeyCode, key, builtInAlias) {\r\n        var keyCodes = config.keyCodes[key] || builtInAlias\r\n        if (Array.isArray(keyCodes)) {\r\n            return keyCodes.indexOf(eventKeyCode) === -1\r\n        } else {\r\n            return keyCodes !== eventKeyCode\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for merging v-bind=\"object\" into a VNode's data.\r\n     */\r\n    function bindObjectProps(data, tag, value, asProp, isSync) {\r\n        if (value) {\r\n            if (!isObject(value)) {\r\n                 false &&\r\n                    false\r\n            } else {\r\n                if (Array.isArray(value)) {\r\n                    value = toObject(value)\r\n                }\r\n                var hash\r\n                var loop = function(key) {\r\n                    if (key === \"class\" || key === \"style\" || isReservedAttribute(key)) {\r\n                        hash = data\r\n                    } else {\r\n                        var type = data.attrs && data.attrs.type\r\n                        hash =\r\n                            asProp || config.mustUseProp(tag, type, key)\r\n                                ? data.domProps || (data.domProps = {})\r\n                                : data.attrs || (data.attrs = {})\r\n                    }\r\n                    if (!(key in hash)) {\r\n                        hash[key] = value[key]\r\n\r\n                        if (isSync) {\r\n                            var on = data.on || (data.on = {})\r\n                            on[\"update:\" + key] = function($event) {\r\n                                value[key] = $event\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                for (var key in value) loop(key)\r\n            }\r\n        }\r\n        return data\r\n    }\r\n\r\n    /*  */\r\n\r\n    /**\r\n     * Runtime helper for rendering static trees.\r\n     */\r\n    function renderStatic(index, isInFor) {\r\n        var tree = this._staticTrees[index]\r\n        // if has already-rendered static tree and not inside v-for,\r\n        // we can reuse the same tree by doing a shallow clone.\r\n        if (tree && !isInFor) {\r\n            return Array.isArray(tree) ? cloneVNodes(tree) : cloneVNode(tree)\r\n        }\r\n        // otherwise, render a fresh tree.\r\n        tree = this._staticTrees[index] = this.$options.staticRenderFns[index].call(\r\n            this._renderProxy\r\n        )\r\n        markStatic(tree, \"__static__\" + index, false)\r\n        return tree\r\n    }\r\n\r\n    /**\r\n     * Runtime helper for v-once.\r\n     * Effectively it means marking the node as static with a unique key.\r\n     */\r\n    function markOnce(tree, index, key) {\r\n        markStatic(tree, \"__once__\" + index + (key ? \"_\" + key : \"\"), true)\r\n        return tree\r\n    }\r\n\r\n    function markStatic(tree, key, isOnce) {\r\n        if (Array.isArray(tree)) {\r\n            for (var i = 0; i < tree.length; i++) {\r\n                if (tree[i] && typeof tree[i] !== \"string\") {\r\n                    markStaticNode(tree[i], key + \"_\" + i, isOnce)\r\n                }\r\n            }\r\n        } else {\r\n            markStaticNode(tree, key, isOnce)\r\n        }\r\n    }\r\n\r\n    function markStaticNode(node, key, isOnce) {\r\n        node.isStatic = true\r\n        node.key = key\r\n        node.isOnce = isOnce\r\n    }\r\n\r\n    /*  */\r\n\r\n    function bindObjectListeners(data, value) {\r\n        if (value) {\r\n            if (!isPlainObject(value)) {\r\n                 false &&\r\n                    false\r\n            } else {\r\n                var on = (data.on = data.on ? extend({}, data.on) : {})\r\n                for (var key in value) {\r\n                    var existing = on[key]\r\n                    var ours = value[key]\r\n                    on[key] = existing ? [].concat(ours, existing) : ours\r\n                }\r\n            }\r\n        }\r\n        return data\r\n    }\r\n\r\n    /*  */\r\n\r\n    function initRender(vm) {\r\n        vm._vnode = null // the root of the child tree\r\n        vm._staticTrees = null\r\n        var parentVnode = (vm.$vnode = vm.$options._parentVnode) // the placeholder node in parent tree\r\n        var renderContext = parentVnode && parentVnode.context\r\n        vm.$slots = resolveSlots(vm.$options._renderChildren, renderContext)\r\n        vm.$scopedSlots = emptyObject\r\n        // bind the createElement fn to this instance\r\n        // so that we get proper render context inside it.\r\n        // args order: tag, data, children, normalizationType, alwaysNormalize\r\n        // internal version is used by render functions compiled from templates\r\n        vm._c = function(a, b, c, d) {\r\n            return createElement(vm, a, b, c, d, false)\r\n        }\r\n        // normalization is always applied for the public version, used in\r\n        // user-written render functions.\r\n        vm.$createElement = function(a, b, c, d) {\r\n            return createElement(vm, a, b, c, d, true)\r\n        }\r\n\r\n        // $attrs & $listeners are exposed for easier HOC creation.\r\n        // they need to be reactive so that HOCs using them are always updated\r\n        var parentData = parentVnode && parentVnode.data\r\n        /* istanbul ignore else */\r\n        {\r\n            defineReactive$$1(vm, \"$attrs\", parentData && parentData.attrs, null, true)\r\n            defineReactive$$1(vm, \"$listeners\", parentData && parentData.on, null, true)\r\n        }\r\n    }\r\n\r\n    function renderMixin(Vue) {\r\n        Vue.prototype.$nextTick = function(fn) {\r\n            return nextTick(fn, this)\r\n        }\r\n\r\n        Vue.prototype._render = function() {\r\n            var vm = this\r\n            var ref = vm.$options\r\n            var render = ref.render\r\n            var staticRenderFns = ref.staticRenderFns\r\n            var _parentVnode = ref._parentVnode\r\n\r\n            if (vm._isMounted) {\r\n                // clone slot nodes on re-renders\r\n                for (var key in vm.$slots) {\r\n                    vm.$slots[key] = cloneVNodes(vm.$slots[key])\r\n                }\r\n            }\r\n\r\n            vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject\r\n\r\n            if (staticRenderFns && !vm._staticTrees) {\r\n                vm._staticTrees = []\r\n            }\r\n            // set parent vnode. this allows render functions to have access\r\n            // to the data on the placeholder node.\r\n            vm.$vnode = _parentVnode\r\n            // render self\r\n            var vnode\r\n            try {\r\n                vnode = render.call(vm._renderProxy, vm.$createElement)\r\n            } catch (e) {\r\n                handleError(e, vm, \"render function\")\r\n                // return error render result,\r\n                // or previous vnode to prevent render error causing blank component\r\n                /* istanbul ignore else */\r\n                {\r\n                    vnode = vm._vnode\r\n                }\r\n            }\r\n            // return empty vnode in case the render function errored out\r\n            if (!(vnode instanceof VNode)) {\r\n                if (false) {}\r\n                vnode = createEmptyVNode()\r\n            }\r\n            // set parent\r\n            vnode.parent = _parentVnode\r\n            return vnode\r\n        }\r\n\r\n        // internal render helpers.\r\n        // these are exposed on the instance prototype to reduce generated render\r\n        // code size.\r\n        Vue.prototype._o = markOnce\r\n        Vue.prototype._n = toNumber\r\n        Vue.prototype._s = toString\r\n        Vue.prototype._l = renderList\r\n        Vue.prototype._t = renderSlot\r\n        Vue.prototype._q = looseEqual\r\n        Vue.prototype._i = looseIndexOf\r\n        Vue.prototype._m = renderStatic\r\n        Vue.prototype._f = resolveFilter\r\n        Vue.prototype._k = checkKeyCodes\r\n        Vue.prototype._b = bindObjectProps\r\n        Vue.prototype._v = createTextVNode\r\n        Vue.prototype._e = createEmptyVNode\r\n        Vue.prototype._u = resolveScopedSlots\r\n        Vue.prototype._g = bindObjectListeners\r\n    }\r\n\r\n    /*  */\r\n\r\n    var uid = 0\r\n\r\n    function initMixin(Vue) {\r\n        Vue.prototype._init = function(options) {\r\n            var vm = this\r\n            // a uid\r\n            vm._uid = uid++\r\n\r\n            var startTag, endTag\r\n            /* istanbul ignore if */\r\n            if (false) {}\r\n\r\n            // a flag to avoid this being observed\r\n            vm._isVue = true\r\n            // merge options\r\n            if (options && options._isComponent) {\r\n                // optimize internal component instantiation\r\n                // since dynamic options merging is pretty slow, and none of the\r\n                // internal component options needs special treatment.\r\n                initInternalComponent(vm, options)\r\n            } else {\r\n                vm.$options = mergeOptions(\r\n                    resolveConstructorOptions(vm.constructor),\r\n                    options || {},\r\n                    vm\r\n                )\r\n            }\r\n            /* istanbul ignore else */\r\n            {\r\n                vm._renderProxy = vm\r\n            }\r\n            // expose real self\r\n            vm._self = vm\r\n            initLifecycle(vm)\r\n            initEvents(vm)\r\n            initRender(vm)\r\n            callHook(vm, \"beforeCreate\")\r\n            initInjections(vm) // resolve injections before data/props\r\n            initState(vm)\r\n            initProvide(vm) // resolve provide after data/props\r\n            callHook(vm, \"created\")\r\n\r\n            /* istanbul ignore if */\r\n            if (false) {}\r\n\r\n            if (vm.$options.el) {\r\n                vm.$mount(vm.$options.el)\r\n            }\r\n        }\r\n    }\r\n\r\n    function initInternalComponent(vm, options) {\r\n        var opts = (vm.$options = Object.create(vm.constructor.options))\r\n        // doing this because it's faster than dynamic enumeration.\r\n        opts.parent = options.parent\r\n        opts.propsData = options.propsData\r\n        opts._parentVnode = options._parentVnode\r\n        opts._parentListeners = options._parentListeners\r\n        opts._renderChildren = options._renderChildren\r\n        opts._componentTag = options._componentTag\r\n        opts._parentElm = options._parentElm\r\n        opts._refElm = options._refElm\r\n        if (options.render) {\r\n            opts.render = options.render\r\n            opts.staticRenderFns = options.staticRenderFns\r\n        }\r\n    }\r\n\r\n    function resolveConstructorOptions(Ctor) {\r\n        var options = Ctor.options\r\n        if (Ctor.super) {\r\n            var superOptions = resolveConstructorOptions(Ctor.super)\r\n            var cachedSuperOptions = Ctor.superOptions\r\n            if (superOptions !== cachedSuperOptions) {\r\n                // super option changed,\r\n                // need to resolve new options.\r\n                Ctor.superOptions = superOptions\r\n                // check if there are any late-modified/attached options (#4976)\r\n                var modifiedOptions = resolveModifiedOptions(Ctor)\r\n                // update base extend options\r\n                if (modifiedOptions) {\r\n                    extend(Ctor.extendOptions, modifiedOptions)\r\n                }\r\n                options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions)\r\n                if (options.name) {\r\n                    options.components[options.name] = Ctor\r\n                }\r\n            }\r\n        }\r\n        return options\r\n    }\r\n\r\n    function resolveModifiedOptions(Ctor) {\r\n        var modified\r\n        var latest = Ctor.options\r\n        var extended = Ctor.extendOptions\r\n        var sealed = Ctor.sealedOptions\r\n        for (var key in latest) {\r\n            if (latest[key] !== sealed[key]) {\r\n                if (!modified) {\r\n                    modified = {}\r\n                }\r\n                modified[key] = dedupe(latest[key], extended[key], sealed[key])\r\n            }\r\n        }\r\n        return modified\r\n    }\r\n\r\n    function dedupe(latest, extended, sealed) {\r\n        // compare latest and sealed to ensure lifecycle hooks won't be duplicated\r\n        // between merges\r\n        if (Array.isArray(latest)) {\r\n            var res = []\r\n            sealed = Array.isArray(sealed) ? sealed : [sealed]\r\n            extended = Array.isArray(extended) ? extended : [extended]\r\n            for (var i = 0; i < latest.length; i++) {\r\n                // push original options and not sealed options to exclude duplicated options\r\n                if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\r\n                    res.push(latest[i])\r\n                }\r\n            }\r\n            return res\r\n        } else {\r\n            return latest\r\n        }\r\n    }\r\n\r\n    function Vue$3(options) {\r\n        if (false) {}\r\n        this._init(options)\r\n    }\r\n\r\n    initMixin(Vue$3)\r\n    stateMixin(Vue$3)\r\n    eventsMixin(Vue$3)\r\n    lifecycleMixin(Vue$3)\r\n    renderMixin(Vue$3)\r\n\r\n    /*  */\r\n\r\n    function initUse(Vue) {\r\n        Vue.use = function(plugin) {\r\n            var installedPlugins = this._installedPlugins || (this._installedPlugins = [])\r\n            if (installedPlugins.indexOf(plugin) > -1) {\r\n                return this\r\n            }\r\n\r\n            // additional parameters\r\n            var args = toArray(arguments, 1)\r\n            args.unshift(this)\r\n            if (typeof plugin.install === \"function\") {\r\n                plugin.install.apply(plugin, args)\r\n            } else if (typeof plugin === \"function\") {\r\n                plugin.apply(null, args)\r\n            }\r\n            installedPlugins.push(plugin)\r\n            return this\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    function initMixin$1(Vue) {\r\n        Vue.mixin = function(mixin) {\r\n            this.options = mergeOptions(this.options, mixin)\r\n            return this\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    function initExtend(Vue) {\r\n        /**\r\n         * Each instance constructor, including Vue, has a unique\r\n         * cid. This enables us to create wrapped \"child\r\n         * constructors\" for prototypal inheritance and cache them.\r\n         */\r\n        Vue.cid = 0\r\n        var cid = 1\r\n\r\n        /**\r\n         * Class inheritance\r\n         */\r\n        Vue.extend = function(extendOptions) {\r\n            extendOptions = extendOptions || {}\r\n            var Super = this\r\n            var SuperId = Super.cid\r\n            var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {})\r\n            if (cachedCtors[SuperId]) {\r\n                return cachedCtors[SuperId]\r\n            }\r\n\r\n            var name = extendOptions.name || Super.options.name\r\n            var Sub = function VueComponent(options) {\r\n                this._init(options)\r\n            }\r\n            Sub.prototype = Object.create(Super.prototype)\r\n            Sub.prototype.constructor = Sub\r\n            Sub.cid = cid++\r\n            Sub.options = mergeOptions(Super.options, extendOptions)\r\n            Sub[\"super\"] = Super\r\n\r\n            // For props and computed properties, we define the proxy getters on\r\n            // the Vue instances at extension time, on the extended prototype. This\r\n            // avoids Object.defineProperty calls for each instance created.\r\n            if (Sub.options.props) {\r\n                initProps$1(Sub)\r\n            }\r\n            if (Sub.options.computed) {\r\n                initComputed$1(Sub)\r\n            }\r\n\r\n            // allow further extension/mixin/plugin usage\r\n            Sub.extend = Super.extend\r\n            Sub.mixin = Super.mixin\r\n            Sub.use = Super.use\r\n\r\n            // create asset registers, so extended classes\r\n            // can have their private assets too.\r\n            ASSET_TYPES.forEach(function(type) {\r\n                Sub[type] = Super[type]\r\n            })\r\n            // enable recursive self-lookup\r\n            if (name) {\r\n                Sub.options.components[name] = Sub\r\n            }\r\n\r\n            // keep a reference to the super options at extension time.\r\n            // later at instantiation we can check if Super's options have\r\n            // been updated.\r\n            Sub.superOptions = Super.options\r\n            Sub.extendOptions = extendOptions\r\n            Sub.sealedOptions = extend({}, Sub.options)\r\n\r\n            // cache constructor\r\n            cachedCtors[SuperId] = Sub\r\n            return Sub\r\n        }\r\n    }\r\n\r\n    function initProps$1(Comp) {\r\n        var props = Comp.options.props\r\n        for (var key in props) {\r\n            proxy(Comp.prototype, \"_props\", key)\r\n        }\r\n    }\r\n\r\n    function initComputed$1(Comp) {\r\n        var computed = Comp.options.computed\r\n        for (var key in computed) {\r\n            defineComputed(Comp.prototype, key, computed[key])\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    function initAssetRegisters(Vue) {\r\n        /**\r\n         * Create asset registration methods.\r\n         */\r\n        ASSET_TYPES.forEach(function(type) {\r\n            Vue[type] = function(id, definition) {\r\n                if (!definition) {\r\n                    return this.options[type + \"s\"][id]\r\n                } else {\r\n                    /* istanbul ignore if */\r\n                    if (type === \"component\" && isPlainObject(definition)) {\r\n                        definition.name = definition.name || id\r\n                        definition = this.options._base.extend(definition)\r\n                    }\r\n                    if (type === \"directive\" && typeof definition === \"function\") {\r\n                        definition = {\r\n                            bind: definition,\r\n                            update: definition\r\n                        }\r\n                    }\r\n                    this.options[type + \"s\"][id] = definition\r\n                    return definition\r\n                }\r\n            }\r\n        })\r\n    }\r\n\r\n    /*  */\r\n\r\n    var patternTypes = [String, RegExp, Array]\r\n\r\n    function getComponentName(opts) {\r\n        return opts && (opts.Ctor.options.name || opts.tag)\r\n    }\r\n\r\n    function matches(pattern, name) {\r\n        if (Array.isArray(pattern)) {\r\n            return pattern.indexOf(name) > -1\r\n        } else if (typeof pattern === \"string\") {\r\n            return pattern.split(\",\").indexOf(name) > -1\r\n        } else if (isRegExp(pattern)) {\r\n            return pattern.test(name)\r\n        }\r\n        /* istanbul ignore next */\r\n        return false\r\n    }\r\n\r\n    function pruneCache(cache, current, filter) {\r\n        for (var key in cache) {\r\n            var cachedNode = cache[key]\r\n            if (cachedNode) {\r\n                var name = getComponentName(cachedNode.componentOptions)\r\n                if (name && !filter(name)) {\r\n                    if (cachedNode !== current) {\r\n                        pruneCacheEntry(cachedNode)\r\n                    }\r\n                    cache[key] = null\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    function pruneCacheEntry(vnode) {\r\n        if (vnode) {\r\n            vnode.componentInstance.$destroy()\r\n        }\r\n    }\r\n\r\n    var KeepAlive = {\r\n        name: \"keep-alive\",\r\n        abstract: true,\r\n\r\n        props: {\r\n            include: patternTypes,\r\n            exclude: patternTypes\r\n        },\r\n\r\n        created: function created() {\r\n            this.cache = Object.create(null)\r\n        },\r\n\r\n        destroyed: function destroyed() {\r\n            var this$1 = this\r\n\r\n            for (var key in this$1.cache) {\r\n                pruneCacheEntry(this$1.cache[key])\r\n            }\r\n        },\r\n\r\n        watch: {\r\n            include: function include(val) {\r\n                pruneCache(this.cache, this._vnode, function(name) {\r\n                    return matches(val, name)\r\n                })\r\n            },\r\n            exclude: function exclude(val) {\r\n                pruneCache(this.cache, this._vnode, function(name) {\r\n                    return !matches(val, name)\r\n                })\r\n            }\r\n        },\r\n\r\n        render: function render() {\r\n            var vnode = getFirstComponentChild(this.$slots.default)\r\n            var componentOptions = vnode && vnode.componentOptions\r\n            if (componentOptions) {\r\n                // check pattern\r\n                var name = getComponentName(componentOptions)\r\n                if (\r\n                    name &&\r\n                    ((this.include && !matches(this.include, name)) ||\r\n                        (this.exclude && matches(this.exclude, name)))\r\n                ) {\r\n                    return vnode\r\n                }\r\n                var key =\r\n                    vnode.key == null\r\n                        ? // same constructor may get registered as different local components\r\n                          // so cid alone is not enough (#3269)\r\n                          componentOptions.Ctor.cid +\r\n                          (componentOptions.tag ? \"::\" + componentOptions.tag : \"\")\r\n                        : vnode.key\r\n                if (this.cache[key]) {\r\n                    vnode.componentInstance = this.cache[key].componentInstance\r\n                } else {\r\n                    this.cache[key] = vnode\r\n                }\r\n                vnode.data.keepAlive = true\r\n            }\r\n            return vnode\r\n        }\r\n    }\r\n\r\n    var builtInComponents = {\r\n        KeepAlive: KeepAlive\r\n    }\r\n\r\n    /*  */\r\n\r\n    function initGlobalAPI(Vue) {\r\n        // config\r\n        var configDef = {}\r\n        configDef.get = function() {\r\n            return config\r\n        }\r\n        Object.defineProperty(Vue, \"config\", configDef)\r\n\r\n        // exposed util methods.\r\n        // NOTE: these are not considered part of the public API - avoid relying on\r\n        // them unless you are aware of the risk.\r\n        Vue.util = {\r\n            warn: warn,\r\n            extend: extend,\r\n            mergeOptions: mergeOptions,\r\n            defineReactive: defineReactive$$1\r\n        }\r\n\r\n        Vue.set = set\r\n        Vue.delete = del\r\n        Vue.nextTick = nextTick\r\n\r\n        Vue.options = Object.create(null)\r\n        ASSET_TYPES.forEach(function(type) {\r\n            Vue.options[type + \"s\"] = Object.create(null)\r\n        })\r\n\r\n        // this is used to identify the \"base\" constructor to extend all plain-object\r\n        // components with in Weex's multi-instance scenarios.\r\n        Vue.options._base = Vue\r\n\r\n        extend(Vue.options.components, builtInComponents)\r\n\r\n        initUse(Vue)\r\n        initMixin$1(Vue)\r\n        initExtend(Vue)\r\n        initAssetRegisters(Vue)\r\n    }\r\n\r\n    initGlobalAPI(Vue$3)\r\n\r\n    Object.defineProperty(Vue$3.prototype, \"$isServer\", {\r\n        get: isServerRendering\r\n    })\r\n\r\n    Object.defineProperty(Vue$3.prototype, \"$ssrContext\", {\r\n        get: function get() {\r\n            /* istanbul ignore next */\r\n            return this.$vnode && this.$vnode.ssrContext\r\n        }\r\n    })\r\n\r\n    Vue$3.version = \"2.4.1\"\r\n    Vue$3.mpvueVersion = \"1.0.12\"\r\n\r\n    /* globals renderer */\r\n\r\n    var isReservedTag = makeMap(\r\n        \"template,script,style,element,content,slot,link,meta,svg,view,\" +\r\n            \"a,div,img,image,text,span,richtext,input,switch,textarea,spinner,select,\" +\r\n            \"slider,slider-neighbor,indicator,trisition,trisition-group,canvas,\" +\r\n            \"list,cell,header,loading,loading-indicator,refresh,scrollable,scroller,\" +\r\n            \"video,web,embed,tabbar,tabheader,datepicker,timepicker,marquee,countdown\",\r\n        true\r\n    )\r\n\r\n    // these are reserved for web because they are directly compiled away\r\n    // during template compilation\r\n    var isReservedAttr = makeMap(\"style,class\")\r\n\r\n    // Elements that you can, intentionally, leave open (and which close themselves)\r\n    // more flexable than web\r\n    var canBeLeftOpenTag = makeMap(\r\n        \"web,spinner,switch,video,textarea,canvas,\" + \"indicator,marquee,countdown\",\r\n        true\r\n    )\r\n\r\n    var isUnaryTag = makeMap(\"embed,img,image,input,link,meta\", true)\r\n\r\n    function mustUseProp() {\r\n        /* console.log('mustUseProp') */\r\n    }\r\n\r\n    function getTagNamespace() {\r\n        /* console.log('getTagNamespace') */\r\n    }\r\n\r\n    function isUnknownElement() {\r\n        /* console.log('isUnknownElement') */\r\n    }\r\n\r\n    function getComKey(vm) {\r\n        return vm && vm.$attrs ? vm.$attrs[\"mpcomid\"] : \"0\"\r\n    }\r\n\r\n    // 用于小程序的 event type 到 web 的 event\r\n    var eventTypeMap = {\r\n        tap: [\"tap\", \"click\"],\r\n        touchstart: [\"touchstart\"],\r\n        touchmove: [\"touchmove\"],\r\n        touchcancel: [\"touchcancel\"],\r\n        touchend: [\"touchend\"],\r\n        longtap: [\"longtap\"],\r\n        input: [\"input\"],\r\n        blur: [\"change\", \"blur\"],\r\n        submit: [\"submit\"],\r\n        focus: [\"focus\"],\r\n        scrolltoupper: [\"scrolltoupper\"],\r\n        scrolltolower: [\"scrolltolower\"],\r\n        scroll: [\"scroll\"]\r\n    }\r\n\r\n    /*  */\r\n\r\n    // import { namespaceMap } from 'mp/util/index'\r\n\r\n    var obj = {}\r\n\r\n    function createElement$1(tagName, vnode) {\r\n        return obj\r\n    }\r\n\r\n    function createElementNS(namespace, tagName) {\r\n        return obj\r\n    }\r\n\r\n    function createTextNode(text) {\r\n        return obj\r\n    }\r\n\r\n    function createComment(text) {\r\n        return obj\r\n    }\r\n\r\n    function insertBefore(parentNode, newNode, referenceNode) {}\r\n\r\n    function removeChild(node, child) {}\r\n\r\n    function appendChild(node, child) {}\r\n\r\n    function parentNode(node) {\r\n        return obj\r\n    }\r\n\r\n    function nextSibling(node) {\r\n        return obj\r\n    }\r\n\r\n    function tagName(node) {\r\n        return \"div\"\r\n    }\r\n\r\n    function setTextContent(node, text) {\r\n        return obj\r\n    }\r\n\r\n    function setAttribute(node, key, val) {\r\n        return obj\r\n    }\r\n\r\n    var nodeOps = Object.freeze({\r\n        createElement: createElement$1,\r\n        createElementNS: createElementNS,\r\n        createTextNode: createTextNode,\r\n        createComment: createComment,\r\n        insertBefore: insertBefore,\r\n        removeChild: removeChild,\r\n        appendChild: appendChild,\r\n        parentNode: parentNode,\r\n        nextSibling: nextSibling,\r\n        tagName: tagName,\r\n        setTextContent: setTextContent,\r\n        setAttribute: setAttribute\r\n    })\r\n\r\n    /*  */\r\n\r\n    var ref = {\r\n        create: function create(_, vnode) {\r\n            registerRef(vnode)\r\n        },\r\n        update: function update(oldVnode, vnode) {\r\n            if (oldVnode.data.ref !== vnode.data.ref) {\r\n                registerRef(oldVnode, true)\r\n                registerRef(vnode)\r\n            }\r\n        },\r\n        destroy: function destroy(vnode) {\r\n            registerRef(vnode, true)\r\n        }\r\n    }\r\n\r\n    function registerRef(vnode, isRemoval) {\r\n        var key = vnode.data.ref\r\n        if (!key) {\r\n            return\r\n        }\r\n\r\n        var vm = vnode.context\r\n        var ref = vnode.componentInstance || vnode.elm\r\n        var refs = vm.$refs\r\n        if (isRemoval) {\r\n            if (Array.isArray(refs[key])) {\r\n                remove(refs[key], ref)\r\n            } else if (refs[key] === ref) {\r\n                refs[key] = undefined\r\n            }\r\n        } else {\r\n            if (vnode.data.refInFor) {\r\n                if (!Array.isArray(refs[key])) {\r\n                    refs[key] = [ref]\r\n                } else if (refs[key].indexOf(ref) < 0) {\r\n                    // $flow-disable-line\r\n                    refs[key].push(ref)\r\n                }\r\n            } else {\r\n                refs[key] = ref\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Virtual DOM patching algorithm based on Snabbdom by\r\n     * Simon Friis Vindum (@paldepind)\r\n     * Licensed under the MIT License\r\n     * https://github.com/paldepind/snabbdom/blob/master/LICENSE\r\n     *\r\n     * modified by Evan You (@yyx990803)\r\n     *\r\n\r\n    /*\r\n     * Not type-checking this because this file is perf-critical and the cost\r\n     * of making flow understand it is not worth it.\r\n     */\r\n\r\n    var emptyNode = new VNode(\"\", {}, [])\r\n\r\n    var hooks = [\"create\", \"activate\", \"update\", \"remove\", \"destroy\"]\r\n\r\n    function sameVnode(a, b) {\r\n        return (\r\n            a.key === b.key &&\r\n            ((a.tag === b.tag &&\r\n                a.isComment === b.isComment &&\r\n                isDef(a.data) === isDef(b.data) &&\r\n                sameInputType(a, b)) ||\r\n                (isTrue(a.isAsyncPlaceholder) &&\r\n                    a.asyncFactory === b.asyncFactory &&\r\n                    isUndef(b.asyncFactory.error)))\r\n        )\r\n    }\r\n\r\n    // Some browsers do not support dynamically changing type for <input>\r\n    // so they need to be treated as different nodes\r\n    function sameInputType(a, b) {\r\n        if (a.tag !== \"input\") {\r\n            return true\r\n        }\r\n        var i\r\n        var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type\r\n        var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type\r\n        return typeA === typeB\r\n    }\r\n\r\n    function createKeyToOldIdx(children, beginIdx, endIdx) {\r\n        var i, key\r\n        var map = {}\r\n        for (i = beginIdx; i <= endIdx; ++i) {\r\n            key = children[i].key\r\n            if (isDef(key)) {\r\n                map[key] = i\r\n            }\r\n        }\r\n        return map\r\n    }\r\n\r\n    function createPatchFunction(backend) {\r\n        var i, j\r\n        var cbs = {}\r\n\r\n        var modules = backend.modules\r\n        var nodeOps = backend.nodeOps\r\n\r\n        for (i = 0; i < hooks.length; ++i) {\r\n            cbs[hooks[i]] = []\r\n            for (j = 0; j < modules.length; ++j) {\r\n                if (isDef(modules[j][hooks[i]])) {\r\n                    cbs[hooks[i]].push(modules[j][hooks[i]])\r\n                }\r\n            }\r\n        }\r\n\r\n        function emptyNodeAt(elm) {\r\n            return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\r\n        }\r\n\r\n        function createRmCb(childElm, listeners) {\r\n            function remove$$1() {\r\n                if (--remove$$1.listeners === 0) {\r\n                    removeNode(childElm)\r\n                }\r\n            }\r\n            remove$$1.listeners = listeners\r\n            return remove$$1\r\n        }\r\n\r\n        function removeNode(el) {\r\n            var parent = nodeOps.parentNode(el)\r\n            // element may have already been removed due to v-html / v-text\r\n            if (isDef(parent)) {\r\n                nodeOps.removeChild(parent, el)\r\n            }\r\n        }\r\n\r\n        var inPre = 0\r\n\r\n        function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested) {\r\n            vnode.isRootInsert = !nested // for transition enter check\r\n            if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\r\n                return\r\n            }\r\n\r\n            var data = vnode.data\r\n            var children = vnode.children\r\n            var tag = vnode.tag\r\n            if (isDef(tag)) {\r\n                vnode.elm = vnode.ns\r\n                    ? nodeOps.createElementNS(vnode.ns, tag)\r\n                    : nodeOps.createElement(tag, vnode)\r\n                setScope(vnode)\r\n\r\n                /* istanbul ignore if */\r\n                {\r\n                    createChildren(vnode, children, insertedVnodeQueue)\r\n                    if (isDef(data)) {\r\n                        invokeCreateHooks(vnode, insertedVnodeQueue)\r\n                    }\r\n                    insert(parentElm, vnode.elm, refElm)\r\n                }\r\n\r\n                if (false) {}\r\n            } else if (isTrue(vnode.isComment)) {\r\n                vnode.elm = nodeOps.createComment(vnode.text)\r\n                insert(parentElm, vnode.elm, refElm)\r\n            } else {\r\n                vnode.elm = nodeOps.createTextNode(vnode.text)\r\n                insert(parentElm, vnode.elm, refElm)\r\n            }\r\n        }\r\n\r\n        function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\r\n            var i = vnode.data\r\n            if (isDef(i)) {\r\n                var isReactivated = isDef(vnode.componentInstance) && i.keepAlive\r\n                if (isDef((i = i.hook)) && isDef((i = i.init))) {\r\n                    i(vnode, false /* hydrating */, parentElm, refElm)\r\n                }\r\n                // after calling the init hook, if the vnode is a child component\r\n                // it should've created a child instance and mounted it. the child\r\n                // component also has set the placeholder vnode's elm.\r\n                // in that case we can just return the element and be done.\r\n                if (isDef(vnode.componentInstance)) {\r\n                    initComponent(vnode, insertedVnodeQueue)\r\n                    if (isTrue(isReactivated)) {\r\n                        reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm)\r\n                    }\r\n                    return true\r\n                }\r\n            }\r\n        }\r\n\r\n        function initComponent(vnode, insertedVnodeQueue) {\r\n            if (isDef(vnode.data.pendingInsert)) {\r\n                insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert)\r\n                vnode.data.pendingInsert = null\r\n            }\r\n            vnode.elm = vnode.componentInstance.$el\r\n            if (isPatchable(vnode)) {\r\n                invokeCreateHooks(vnode, insertedVnodeQueue)\r\n                setScope(vnode)\r\n            } else {\r\n                // empty component root.\r\n                // skip all element-related modules except for ref (#3455)\r\n                registerRef(vnode)\r\n                // make sure to invoke the insert hook\r\n                insertedVnodeQueue.push(vnode)\r\n            }\r\n        }\r\n\r\n        function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\r\n            var i\r\n            // hack for #4339: a reactivated component with inner transition\r\n            // does not trigger because the inner node's created hooks are not called\r\n            // again. It's not ideal to involve module-specific logic in here but\r\n            // there doesn't seem to be a better way to do it.\r\n            var innerNode = vnode\r\n            while (innerNode.componentInstance) {\r\n                innerNode = innerNode.componentInstance._vnode\r\n                if (isDef((i = innerNode.data)) && isDef((i = i.transition))) {\r\n                    for (i = 0; i < cbs.activate.length; ++i) {\r\n                        cbs.activate[i](emptyNode, innerNode)\r\n                    }\r\n                    insertedVnodeQueue.push(innerNode)\r\n                    break\r\n                }\r\n            }\r\n            // unlike a newly created component,\r\n            // a reactivated keep-alive component doesn't insert itself\r\n            insert(parentElm, vnode.elm, refElm)\r\n        }\r\n\r\n        function insert(parent, elm, ref$$1) {\r\n            if (isDef(parent)) {\r\n                if (isDef(ref$$1)) {\r\n                    if (ref$$1.parentNode === parent) {\r\n                        nodeOps.insertBefore(parent, elm, ref$$1)\r\n                    }\r\n                } else {\r\n                    nodeOps.appendChild(parent, elm)\r\n                }\r\n            }\r\n        }\r\n\r\n        function createChildren(vnode, children, insertedVnodeQueue) {\r\n            if (Array.isArray(children)) {\r\n                for (var i = 0; i < children.length; ++i) {\r\n                    createElm(children[i], insertedVnodeQueue, vnode.elm, null, true)\r\n                }\r\n            } else if (isPrimitive(vnode.text)) {\r\n                nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text))\r\n            }\r\n        }\r\n\r\n        function isPatchable(vnode) {\r\n            while (vnode.componentInstance) {\r\n                vnode = vnode.componentInstance._vnode\r\n            }\r\n            return isDef(vnode.tag)\r\n        }\r\n\r\n        function invokeCreateHooks(vnode, insertedVnodeQueue) {\r\n            for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\r\n                cbs.create[i$1](emptyNode, vnode)\r\n            }\r\n            i = vnode.data.hook // Reuse variable\r\n            if (isDef(i)) {\r\n                if (isDef(i.create)) {\r\n                    i.create(emptyNode, vnode)\r\n                }\r\n                if (isDef(i.insert)) {\r\n                    insertedVnodeQueue.push(vnode)\r\n                }\r\n            }\r\n        }\r\n\r\n        // set scope id attribute for scoped CSS.\r\n        // this is implemented as a special case to avoid the overhead\r\n        // of going through the normal attribute patching process.\r\n        function setScope(vnode) {\r\n            var i\r\n            var ancestor = vnode\r\n            while (ancestor) {\r\n                if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) {\r\n                    nodeOps.setAttribute(vnode.elm, i, \"\")\r\n                }\r\n                ancestor = ancestor.parent\r\n            }\r\n            // for slot content they should also get the scopeId from the host instance.\r\n            if (\r\n                isDef((i = activeInstance)) &&\r\n                i !== vnode.context &&\r\n                isDef((i = i.$options._scopeId))\r\n            ) {\r\n                nodeOps.setAttribute(vnode.elm, i, \"\")\r\n            }\r\n        }\r\n\r\n        function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\r\n            for (; startIdx <= endIdx; ++startIdx) {\r\n                createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm)\r\n            }\r\n        }\r\n\r\n        function invokeDestroyHook(vnode) {\r\n            var i, j\r\n            var data = vnode.data\r\n            if (isDef(data)) {\r\n                if (isDef((i = data.hook)) && isDef((i = i.destroy))) {\r\n                    i(vnode)\r\n                }\r\n                for (i = 0; i < cbs.destroy.length; ++i) {\r\n                    cbs.destroy[i](vnode)\r\n                }\r\n            }\r\n            if (isDef((i = vnode.children))) {\r\n                for (j = 0; j < vnode.children.length; ++j) {\r\n                    invokeDestroyHook(vnode.children[j])\r\n                }\r\n            }\r\n        }\r\n\r\n        function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\r\n            for (; startIdx <= endIdx; ++startIdx) {\r\n                var ch = vnodes[startIdx]\r\n                if (isDef(ch)) {\r\n                    if (isDef(ch.tag)) {\r\n                        removeAndInvokeRemoveHook(ch)\r\n                        invokeDestroyHook(ch)\r\n                    } else {\r\n                        // Text node\r\n                        removeNode(ch.elm)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        function removeAndInvokeRemoveHook(vnode, rm) {\r\n            if (isDef(rm) || isDef(vnode.data)) {\r\n                var i\r\n                var listeners = cbs.remove.length + 1\r\n                if (isDef(rm)) {\r\n                    // we have a recursively passed down rm callback\r\n                    // increase the listeners count\r\n                    rm.listeners += listeners\r\n                } else {\r\n                    // directly removing\r\n                    rm = createRmCb(vnode.elm, listeners)\r\n                }\r\n                // recursively invoke hooks on child component root node\r\n                if (\r\n                    isDef((i = vnode.componentInstance)) &&\r\n                    isDef((i = i._vnode)) &&\r\n                    isDef(i.data)\r\n                ) {\r\n                    removeAndInvokeRemoveHook(i, rm)\r\n                }\r\n                for (i = 0; i < cbs.remove.length; ++i) {\r\n                    cbs.remove[i](vnode, rm)\r\n                }\r\n                if (isDef((i = vnode.data.hook)) && isDef((i = i.remove))) {\r\n                    i(vnode, rm)\r\n                } else {\r\n                    rm()\r\n                }\r\n            } else {\r\n                removeNode(vnode.elm)\r\n            }\r\n        }\r\n\r\n        function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\r\n            var oldStartIdx = 0\r\n            var newStartIdx = 0\r\n            var oldEndIdx = oldCh.length - 1\r\n            var oldStartVnode = oldCh[0]\r\n            var oldEndVnode = oldCh[oldEndIdx]\r\n            var newEndIdx = newCh.length - 1\r\n            var newStartVnode = newCh[0]\r\n            var newEndVnode = newCh[newEndIdx]\r\n            var oldKeyToIdx, idxInOld, elmToMove, refElm\r\n\r\n            // removeOnly is a special flag used only by <transition-group>\r\n            // to ensure removed elements stay in correct relative positions\r\n            // during leaving transitions\r\n            var canMove = !removeOnly\r\n\r\n            while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\r\n                if (isUndef(oldStartVnode)) {\r\n                    oldStartVnode = oldCh[++oldStartIdx] // Vnode has been moved left\r\n                } else if (isUndef(oldEndVnode)) {\r\n                    oldEndVnode = oldCh[--oldEndIdx]\r\n                } else if (sameVnode(oldStartVnode, newStartVnode)) {\r\n                    patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue)\r\n                    oldStartVnode = oldCh[++oldStartIdx]\r\n                    newStartVnode = newCh[++newStartIdx]\r\n                } else if (sameVnode(oldEndVnode, newEndVnode)) {\r\n                    patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue)\r\n                    oldEndVnode = oldCh[--oldEndIdx]\r\n                    newEndVnode = newCh[--newEndIdx]\r\n                } else if (sameVnode(oldStartVnode, newEndVnode)) {\r\n                    // Vnode moved right\r\n                    patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue)\r\n                    canMove &&\r\n                        nodeOps.insertBefore(\r\n                            parentElm,\r\n                            oldStartVnode.elm,\r\n                            nodeOps.nextSibling(oldEndVnode.elm)\r\n                        )\r\n                    oldStartVnode = oldCh[++oldStartIdx]\r\n                    newEndVnode = newCh[--newEndIdx]\r\n                } else if (sameVnode(oldEndVnode, newStartVnode)) {\r\n                    // Vnode moved left\r\n                    patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue)\r\n                    canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm)\r\n                    oldEndVnode = oldCh[--oldEndIdx]\r\n                    newStartVnode = newCh[++newStartIdx]\r\n                } else {\r\n                    if (isUndef(oldKeyToIdx)) {\r\n                        oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx)\r\n                    }\r\n                    idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null\r\n                    if (isUndef(idxInOld)) {\r\n                        // New element\r\n                        createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm)\r\n                        newStartVnode = newCh[++newStartIdx]\r\n                    } else {\r\n                        elmToMove = oldCh[idxInOld]\r\n                        /* istanbul ignore if */\r\n                        if (false) {}\r\n                        if (sameVnode(elmToMove, newStartVnode)) {\r\n                            patchVnode(elmToMove, newStartVnode, insertedVnodeQueue)\r\n                            oldCh[idxInOld] = undefined\r\n                            canMove &&\r\n                                nodeOps.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm)\r\n                            newStartVnode = newCh[++newStartIdx]\r\n                        } else {\r\n                            // same key but different element. treat as new element\r\n                            createElm(\r\n                                newStartVnode,\r\n                                insertedVnodeQueue,\r\n                                parentElm,\r\n                                oldStartVnode.elm\r\n                            )\r\n                            newStartVnode = newCh[++newStartIdx]\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (oldStartIdx > oldEndIdx) {\r\n                refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm\r\n                addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue)\r\n            } else if (newStartIdx > newEndIdx) {\r\n                removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx)\r\n            }\r\n        }\r\n\r\n        function patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly) {\r\n            if (oldVnode === vnode) {\r\n                return\r\n            }\r\n\r\n            var elm = (vnode.elm = oldVnode.elm)\r\n\r\n            if (isTrue(oldVnode.isAsyncPlaceholder)) {\r\n                if (isDef(vnode.asyncFactory.resolved)) {\r\n                    hydrate(oldVnode.elm, vnode, insertedVnodeQueue)\r\n                } else {\r\n                    vnode.isAsyncPlaceholder = true\r\n                }\r\n                return\r\n            }\r\n\r\n            // reuse element for static trees.\r\n            // note we only do this if the vnode is cloned -\r\n            // if the new node is not cloned it means the render functions have been\r\n            // reset by the hot-reload-api and we need to do a proper re-render.\r\n            if (\r\n                isTrue(vnode.isStatic) &&\r\n                isTrue(oldVnode.isStatic) &&\r\n                vnode.key === oldVnode.key &&\r\n                (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\r\n            ) {\r\n                vnode.componentInstance = oldVnode.componentInstance\r\n                return\r\n            }\r\n\r\n            var i\r\n            var data = vnode.data\r\n            if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) {\r\n                i(oldVnode, vnode)\r\n            }\r\n\r\n            var oldCh = oldVnode.children\r\n            var ch = vnode.children\r\n            if (isDef(data) && isPatchable(vnode)) {\r\n                for (i = 0; i < cbs.update.length; ++i) {\r\n                    cbs.update[i](oldVnode, vnode)\r\n                }\r\n                if (isDef((i = data.hook)) && isDef((i = i.update))) {\r\n                    i(oldVnode, vnode)\r\n                }\r\n            }\r\n            if (isUndef(vnode.text)) {\r\n                if (isDef(oldCh) && isDef(ch)) {\r\n                    if (oldCh !== ch) {\r\n                        updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly)\r\n                    }\r\n                } else if (isDef(ch)) {\r\n                    if (isDef(oldVnode.text)) {\r\n                        nodeOps.setTextContent(elm, \"\")\r\n                    }\r\n                    addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue)\r\n                } else if (isDef(oldCh)) {\r\n                    removeVnodes(elm, oldCh, 0, oldCh.length - 1)\r\n                } else if (isDef(oldVnode.text)) {\r\n                    nodeOps.setTextContent(elm, \"\")\r\n                }\r\n            } else if (oldVnode.text !== vnode.text) {\r\n                nodeOps.setTextContent(elm, vnode.text)\r\n            }\r\n            if (isDef(data)) {\r\n                if (isDef((i = data.hook)) && isDef((i = i.postpatch))) {\r\n                    i(oldVnode, vnode)\r\n                }\r\n            }\r\n        }\r\n\r\n        function invokeInsertHook(vnode, queue, initial) {\r\n            // delay insert hooks for component root nodes, invoke them after the\r\n            // element is really inserted\r\n            if (isTrue(initial) && isDef(vnode.parent)) {\r\n                vnode.parent.data.pendingInsert = queue\r\n            } else {\r\n                for (var i = 0; i < queue.length; ++i) {\r\n                    queue[i].data.hook.insert(queue[i])\r\n                }\r\n            }\r\n        }\r\n\r\n        var bailed = false\r\n        // list of modules that can skip create hook during hydration because they\r\n        // are already rendered on the client or has no need for initialization\r\n        var isRenderedModule = makeMap(\"attrs,style,class,staticClass,staticStyle,key\")\r\n\r\n        // Note: this is a browser-only function so we can assume elms are DOM nodes.\r\n        function hydrate(elm, vnode, insertedVnodeQueue) {\r\n            if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\r\n                vnode.elm = elm\r\n                vnode.isAsyncPlaceholder = true\r\n                return true\r\n            }\r\n            vnode.elm = elm\r\n            var tag = vnode.tag\r\n            var data = vnode.data\r\n            var children = vnode.children\r\n            if (isDef(data)) {\r\n                if (isDef((i = data.hook)) && isDef((i = i.init))) {\r\n                    i(vnode, true /* hydrating */)\r\n                }\r\n                if (isDef((i = vnode.componentInstance))) {\r\n                    // child component. it should have hydrated its own tree.\r\n                    initComponent(vnode, insertedVnodeQueue)\r\n                    return true\r\n                }\r\n            }\r\n            if (isDef(tag)) {\r\n                if (isDef(children)) {\r\n                    // empty element, allow client to pick up and populate children\r\n                    if (!elm.hasChildNodes()) {\r\n                        createChildren(vnode, children, insertedVnodeQueue)\r\n                    } else {\r\n                        var childrenMatch = true\r\n                        var childNode = elm.firstChild\r\n                        for (var i$1 = 0; i$1 < children.length; i$1++) {\r\n                            if (\r\n                                !childNode ||\r\n                                !hydrate(childNode, children[i$1], insertedVnodeQueue)\r\n                            ) {\r\n                                childrenMatch = false\r\n                                break\r\n                            }\r\n                            childNode = childNode.nextSibling\r\n                        }\r\n                        // if childNode is not null, it means the actual childNodes list is\r\n                        // longer than the virtual children list.\r\n                        if (!childrenMatch || childNode) {\r\n                            if (\r\n                                false\r\n                            ) {}\r\n                            return false\r\n                        }\r\n                    }\r\n                }\r\n                if (isDef(data)) {\r\n                    for (var key in data) {\r\n                        if (!isRenderedModule(key)) {\r\n                            invokeCreateHooks(vnode, insertedVnodeQueue)\r\n                            break\r\n                        }\r\n                    }\r\n                }\r\n            } else if (elm.data !== vnode.text) {\r\n                elm.data = vnode.text\r\n            }\r\n            return true\r\n        }\r\n\r\n        return function patch(oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\r\n            if (isUndef(vnode)) {\r\n                if (isDef(oldVnode)) {\r\n                    invokeDestroyHook(oldVnode)\r\n                }\r\n                return\r\n            }\r\n\r\n            var isInitialPatch = false\r\n            var insertedVnodeQueue = []\r\n\r\n            if (isUndef(oldVnode)) {\r\n                // empty mount (likely as component), create new root element\r\n                isInitialPatch = true\r\n                createElm(vnode, insertedVnodeQueue, parentElm, refElm)\r\n            } else {\r\n                var isRealElement = isDef(oldVnode.nodeType)\r\n                if (!isRealElement && sameVnode(oldVnode, vnode)) {\r\n                    // patch existing root node\r\n                    patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly)\r\n                } else {\r\n                    if (isRealElement) {\r\n                        // mounting to a real element\r\n                        // check if this is server-rendered content and if we can perform\r\n                        // a successful hydration.\r\n                        if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\r\n                            oldVnode.removeAttribute(SSR_ATTR)\r\n                            hydrating = true\r\n                        }\r\n                        if (isTrue(hydrating)) {\r\n                            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\r\n                                invokeInsertHook(vnode, insertedVnodeQueue, true)\r\n                                return oldVnode\r\n                            } else {\r\n                            }\r\n                        }\r\n                        // either not server-rendered, or hydration failed.\r\n                        // create an empty node and replace it\r\n                        oldVnode = emptyNodeAt(oldVnode)\r\n                    }\r\n                    // replacing existing element\r\n                    var oldElm = oldVnode.elm\r\n                    var parentElm$1 = nodeOps.parentNode(oldElm)\r\n                    createElm(\r\n                        vnode,\r\n                        insertedVnodeQueue,\r\n                        // extremely rare edge case: do not insert if old element is in a\r\n                        // leaving transition. Only happens when combining transition +\r\n                        // keep-alive + HOCs. (#4590)\r\n                        oldElm._leaveCb ? null : parentElm$1,\r\n                        nodeOps.nextSibling(oldElm)\r\n                    )\r\n\r\n                    if (isDef(vnode.parent)) {\r\n                        // component root element replaced.\r\n                        // update parent placeholder node element, recursively\r\n                        var ancestor = vnode.parent\r\n                        while (ancestor) {\r\n                            ancestor.elm = vnode.elm\r\n                            ancestor = ancestor.parent\r\n                        }\r\n                        if (isPatchable(vnode)) {\r\n                            for (var i = 0; i < cbs.create.length; ++i) {\r\n                                cbs.create[i](emptyNode, vnode.parent)\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    if (isDef(parentElm$1)) {\r\n                        removeVnodes(parentElm$1, [oldVnode], 0, 0)\r\n                    } else if (isDef(oldVnode.tag)) {\r\n                        invokeDestroyHook(oldVnode)\r\n                    }\r\n                }\r\n            }\r\n\r\n            invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch)\r\n            return vnode.elm\r\n        }\r\n    }\r\n\r\n    /*  */\r\n\r\n    // import baseModules from 'core/vdom/modules/index'\r\n    // const platformModules = []\r\n    // import platformModules from 'web/runtime/modules/index'\r\n\r\n    // the directive module should be applied last, after all\r\n    // built-in modules have been applied.\r\n    // const modules = platformModules.concat(baseModules)\r\n    var modules = [ref]\r\n\r\n    var corePatch = createPatchFunction({\r\n        nodeOps: nodeOps,\r\n        modules: modules\r\n    })\r\n\r\n    function patch() {\r\n        corePatch.apply(this, arguments)\r\n        this.$updateDataToMP()\r\n    }\r\n\r\n    function callHook$1(vm, hook, params) {\r\n        var handlers = vm.$options[hook]\r\n        if (hook === \"onError\" && handlers) {\r\n            handlers = [handlers]\r\n        }\r\n\r\n        var ret\r\n        if (handlers) {\r\n            for (var i = 0, j = handlers.length; i < j; i++) {\r\n                try {\r\n                    ret = handlers[i].call(vm, params)\r\n                } catch (e) {\r\n                    handleError(e, vm, hook + \" hook\")\r\n                }\r\n            }\r\n        }\r\n        if (vm._hasHookEvent) {\r\n            vm.$emit(\"hook:\" + hook)\r\n        }\r\n\r\n        // for child\r\n        if (vm.$children.length) {\r\n            vm.$children.forEach(function(v) {\r\n                return callHook$1(v, hook, params)\r\n            })\r\n        }\r\n\r\n        return ret\r\n    }\r\n\r\n    // mpType 小程序实例的类型,可能的值是 'app', 'page'\r\n    // rootVueVM 是 vue 的根组件实例,子组件中访问 this.$root 可得\r\n    function getGlobalData(app, rootVueVM) {\r\n        var mp = rootVueVM.$mp\r\n        if (app && app.globalData) {\r\n            mp.appOptions = app.globalData.appOptions\r\n        }\r\n    }\r\n\r\n    // 格式化 properties 属性,并给每个属性加上 observer 方法\r\n\r\n    // properties 的 一些类型 https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html\r\n    // properties: {\r\n    //   paramA: Number,\r\n    //   myProperty: { // 属性名\r\n    //     type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)\r\n    //     value: '', // 属性初始值(可选),如果未指定则会根据类型选择一个\r\n    //     observer: function(newVal, oldVal, changedPath) {\r\n    //        // 属性被改变时执行的函数(可选),也可以写成在methods段中定义的方法名字符串, 如:'_propertyChange'\r\n    //        // 通常 newVal 就是新设置的数据, oldVal 是旧数据\r\n    //     }\r\n    //   },\r\n    // }\r\n\r\n    // props 的一些类型 https://cn.vuejs.org/v2/guide/components-props.html#ad\r\n    // props: {\r\n    //   // 基础的类型检查 (`null` 匹配任何类型)\r\n    //   propA: Number,\r\n    //   // 多个可能的类型\r\n    //   propB: [String, Number],\r\n    //   // 必填的字符串\r\n    //   propC: {\r\n    //     type: String,\r\n    //     required: true\r\n    //   },\r\n    //   // 带有默认值的数字\r\n    //   propD: {\r\n    //     type: Number,\r\n    //     default: 100\r\n    //   },\r\n    //   // 带有默认值的对象\r\n    //   propE: {\r\n    //     type: Object,\r\n    //     // 对象或数组且一定会从一个工厂函数返回默认值\r\n    //     default: function () {\r\n    //       return { message: 'hello' }\r\n    //     }\r\n    //   },\r\n    //   // 自定义验证函数\r\n    //   propF: {\r\n    //     validator: function (value) {\r\n    //       // 这个值必须匹配下列字符串中的一个\r\n    //       return ['success', 'warning', 'danger'].indexOf(value) !== -1\r\n    //     }\r\n    //   }\r\n    // }\r\n\r\n    // core/util/options\r\n    function normalizeProps$1(props, res, vm) {\r\n        if (!props) {\r\n            return\r\n        }\r\n        var i, val, name\r\n        if (Array.isArray(props)) {\r\n            i = props.length\r\n            while (i--) {\r\n                val = props[i]\r\n                if (typeof val === \"string\") {\r\n                    name = camelize(val)\r\n                    res[name] = {\r\n                        type: null\r\n                    }\r\n                } else {\r\n                }\r\n            }\r\n        } else if (isPlainObject(props)) {\r\n            for (var key in props) {\r\n                val = props[key]\r\n                name = camelize(key)\r\n                res[name] = isPlainObject(val)\r\n                    ? val\r\n                    : {\r\n                          type: val\r\n                      }\r\n            }\r\n        }\r\n\r\n        // fix vueProps to properties\r\n        for (var key$1 in res) {\r\n            if (res.hasOwnProperty(key$1)) {\r\n                var item = res[key$1]\r\n                if (item.default) {\r\n                    item.value = item.default\r\n                }\r\n                var oldObserver = item.observer\r\n                item.observer = function(newVal, oldVal) {\r\n                    vm[name] = newVal\r\n                    // 先修改值再触发原始的 observer,跟 watch 行为保持一致\r\n                    if (typeof oldObserver === \"function\") {\r\n                        oldObserver.call(vm, newVal, oldVal)\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return res\r\n    }\r\n\r\n    function normalizeProperties(vm) {\r\n        var properties = vm.$options.properties\r\n        var vueProps = vm.$options.props\r\n        var res = {}\r\n\r\n        normalizeProps$1(properties, res, vm)\r\n        normalizeProps$1(vueProps, res, vm)\r\n\r\n        return res\r\n    }\r\n\r\n    /**\r\n     * 把 properties 中的属性 proxy 到 vm 上\r\n     */\r\n    function initMpProps(vm) {\r\n        var mpProps = (vm._mpProps = {})\r\n        var keys = Object.keys(vm.$options.properties || {})\r\n        keys.forEach(function(key) {\r\n            if (!(key in vm)) {\r\n                proxy(vm, \"_mpProps\", key)\r\n                mpProps[key] = undefined // for observe\r\n            }\r\n        })\r\n        observe(mpProps, true)\r\n    }\r\n\r\n    function initMP(mpType, next) {\r\n        var rootVueVM = this.$root\r\n        if (!rootVueVM.$mp) {\r\n            rootVueVM.$mp = {}\r\n        }\r\n\r\n        var mp = rootVueVM.$mp\r\n\r\n        // Please do not register multiple Pages\r\n        // if (mp.registered) {\r\n        if (mp.status) {\r\n            // 处理子组件的小程序生命周期\r\n            if (mpType === \"app\") {\r\n                callHook$1(this, \"onLaunch\", mp.appOptions)\r\n            } else {\r\n                callHook$1(this, \"onLoad\", mp.query)\r\n                // callHook$1(this, \"onReady\") // 避免 onReady触发两次\r\n            }\r\n            return next()\r\n        }\r\n        // mp.registered = true\r\n\r\n        mp.mpType = mpType\r\n        mp.status = \"register\"\r\n\r\n        if (mpType === \"app\") {\r\n            global.App({\r\n                // 页面的初始数据\r\n                globalData: {\r\n                    appOptions: {}\r\n                },\r\n\r\n                handleProxy: function handleProxy(e) {\r\n                    return rootVueVM.$handleProxyWithVue(e)\r\n                },\r\n\r\n                // Do something initial when launch.\r\n                onLaunch: function onLaunch(options) {\r\n                    if (options === void 0) options = {}\r\n\r\n                    mp.app = this\r\n                    mp.status = \"launch\"\r\n                    this.globalData.appOptions = mp.appOptions = options\r\n                    callHook$1(rootVueVM, \"onLaunch\", options)\r\n                    next()\r\n                },\r\n\r\n                // Do something when app show.\r\n                onShow: function onShow(options) {\r\n                    if (options === void 0) options = {}\r\n\r\n                    mp.status = \"show\"\r\n                    this.globalData.appOptions = mp.appOptions = options\r\n                    callHook$1(rootVueVM, \"onShow\", options)\r\n                },\r\n\r\n                // Do something when app hide.\r\n                onHide: function onHide() {\r\n                    mp.status = \"hide\"\r\n                    callHook$1(rootVueVM, \"onHide\")\r\n                },\r\n\r\n                onError: function onError(err) {\r\n                    callHook$1(rootVueVM, \"onError\", err)\r\n                },\r\n                //fixed by xxxxxx\r\n                onUniNViewMessage: function onUniNViewMessage(e) {\r\n                    callHook$1(rootVueVM, \"onUniNViewMessage\", e)\r\n                }\r\n            })\r\n        } else if (mpType === \"component\") {\r\n            initMpProps(rootVueVM)\r\n\r\n            global.Component({\r\n                // 小程序原生的组件属性\r\n                properties: normalizeProperties(rootVueVM),\r\n                // 页面的初始数据\r\n                data: {\r\n                    $root: {}\r\n                },\r\n                methods: {\r\n                    handleProxy: function handleProxy(e) {\r\n                        return rootVueVM.$handleProxyWithVue(e)\r\n                    }\r\n                },\r\n                // mp lifecycle for vue\r\n                // 组件生命周期函数,在组件实例进入页面节点树时执行,注意此时不能调用 setData\r\n                created: function created() {\r\n                    mp.status = \"created\"\r\n                    mp.page = this\r\n                },\r\n                // 组件生命周期函数,在组件实例进入页面节点树时执行\r\n                attached: function attached() {\r\n                    mp.status = \"attached\"\r\n                    callHook$1(rootVueVM, \"attached\")\r\n                },\r\n                // 组件生命周期函数,在组件布局完成后执行,此时可以获取节点信息(使用 SelectorQuery )\r\n                ready: function ready() {\r\n                    mp.status = \"ready\"\r\n\r\n                    callHook$1(rootVueVM, \"ready\")\r\n                    next()\r\n\r\n                    // 只有页面需要 setData\r\n                    rootVueVM.$nextTick(function() {\r\n                        rootVueVM._initDataToMP()\r\n                    })\r\n                },\r\n                // 组件生命周期函数,在组件实例被移动到节点树另一个位置时执行\r\n                moved: function moved() {\r\n                    callHook$1(rootVueVM, \"moved\")\r\n                },\r\n                // 组件生命周期函数,在组件实例被从页面节点树移除时执行\r\n                detached: function detached() {\r\n                    mp.status = \"detached\"\r\n                    callHook$1(rootVueVM, \"detached\")\r\n                }\r\n            })\r\n        } else {\r\n            var app = global.getApp()\r\n    \n            \r\n            global.Page({\r\n                // 页面的初始数据\r\n                data: {\r\n                    $root: {}\r\n                },\r\n\r\n                handleProxy: function handleProxy(e) {\r\n                    return rootVueVM.$handleProxyWithVue(e)\r\n                },\r\n\r\n                // mp lifecycle for vue\r\n                // 生命周期函数--监听页面加载\r\n                onLoad: function onLoad(query) {\r\n                    rootVueVM.__wxWebviewId__ = this.__wxWebviewId__//fixed by xxxxxx(createIntersectionObserver)\r\n                    mp.page = this\r\n                    mp.query = query\r\n                    mp.status = \"load\"\r\n                    getGlobalData(app, rootVueVM)\n                    //仅load时重置数据\n                    if (rootVueVM.$options && typeof rootVueVM.$options.data === \"function\") {\n                    \t\tObject.assign(rootVueVM.$data, rootVueVM.$options.data())\n                    }\r\n                    callHook$1(rootVueVM, \"onLoad\", query)\r\n                },\r\n\r\n                // 生命周期函数--监听页面显示\r\n                onShow: function onShow() {\n                    rootVueVM.__wxWebviewId__ = this.__wxWebviewId__//fixed by xxxxxx(createIntersectionObserver)\r\n                    mp.page = this\r\n                    mp.status = \"show\"\n                \r\n                    callHook$1(rootVueVM, \"onShow\")\n                    \n                    //   // 只有页面需要 setData\n                    rootVueVM.$nextTick(function () {\n                    \trootVueVM._initDataToMP();\n                    });\r\n                },\r\n\r\n                // 生命周期函数--监听页面初次渲染完成\r\n                onReady: function onReady() {\r\n                    mp.status = \"ready\"\r\n\r\n                    callHook$1(rootVueVM, \"onReady\")\r\n                    next()\r\n                },\r\n\r\n                // 生命周期函数--监听页面隐藏\r\n                onHide: function onHide() {\r\n                    mp.status = \"hide\"\r\n                    callHook$1(rootVueVM, \"onHide\")\r\n                },\r\n\r\n                // 生命周期函数--监听页面卸载\r\n                onUnload: function onUnload() {\r\n                    mp.status = \"unload\"\r\n                    callHook$1(rootVueVM, \"onUnload\")\r\n                    mp.page = null\r\n                },\r\n\r\n                // 页面相关事件处理函数--监听用户下拉动作\r\n                onPullDownRefresh: function onPullDownRefresh() {\r\n                    callHook$1(rootVueVM, \"onPullDownRefresh\")\r\n                },\r\n\r\n                // 页面上拉触底事件的处理函数\r\n                onReachBottom: function onReachBottom() {\r\n                    callHook$1(rootVueVM, \"onReachBottom\")\r\n                },\r\n\r\n                // 用户点击右上角分享\r\n                onShareAppMessage: rootVueVM.$options.onShareAppMessage\r\n                    ? function(options) {\r\n                          return callHook$1(rootVueVM, \"onShareAppMessage\", options)\r\n                      }\r\n                    : null,\r\n\r\n                // Do something when page scroll\r\n                onPageScroll: function onPageScroll(options) {\r\n                    callHook$1(rootVueVM, \"onPageScroll\", options)\r\n                },\r\n\r\n                // 当前是 tab 页时,点击 tab 时触发\r\n                onTabItemTap: function onTabItemTap(options) {\r\n                    callHook$1(rootVueVM, \"onTabItemTap\", options)\r\n                }\r\n            })\r\n        }\r\n    }\r\n\r\n    // 节流方法,性能优化\r\n    // 全局的命名约定,为了节省编译的包大小一律采取形象的缩写,说明如下。\r\n    // $c === $child\r\n    // $k === $comKey\r\n\r\n    // 新型的被拍平的数据结构\r\n    // {\r\n    //   $root: {\r\n    //     '1-1'{\r\n    //       // ... data\r\n    //     },\r\n    //     '1.2-1': {\r\n    //       // ... data1\r\n    //     },\r\n    //     '1.2-2': {\r\n    //       // ... data2\r\n    //     }\r\n    //   }\r\n    // }\r\n\r\n    function getVmData(vm) {\r\n        // 确保当前 vm 所有数据被同步\r\n        var dataKeys = [].concat(\r\n            Object.keys(vm._data || {}),\r\n            Object.keys(vm._props || {}),\r\n            Object.keys(vm._mpProps || {}),\r\n            Object.keys(vm._computedWatchers || {})\r\n        )\r\n        return dataKeys.reduce(function(res, key) {\r\n            res[key] = vm[key]\r\n            return res\r\n        }, {})\r\n    }\r\n\r\n    function getParentComKey(vm, res) {\r\n        if (res === void 0) res = []\r\n\r\n        var ref = vm || {}\r\n        var $parent = ref.$parent\r\n        if (!$parent) {\r\n            return res\r\n        }\r\n        res.unshift(getComKey($parent))\r\n        if ($parent.$parent) {\r\n            return getParentComKey($parent, res)\r\n        }\r\n        return res\r\n    }\r\n\r\n    function formatVmData(vm) {\r\n        var $p = getParentComKey(vm).join(\",\")\r\n        var $k = $p + ($p ? \",\" : \"\") + getComKey(vm)\r\n\r\n        // getVmData 这儿获取当前组件内的所有数据,包含 props、computed 的数据\r\n        // 改动 vue.runtime 所获的的核心能力\r\n        var data = Object.assign(getVmData(vm), {\r\n            $k: $k,\r\n            $kk: $k + \",\",\r\n            $p: $p\r\n        })\r\n        var key = \"$root.\" + $k\r\n        var res = {}\r\n        res[key] = data\r\n        return res\r\n    }\r\n\r\n    function collectVmData(vm, res) {\r\n        if (res === void 0) res = {}\r\n\r\n        var vms = vm.$children\r\n        if (vms && vms.length) {\r\n            vms.forEach(function(v) {\r\n                return collectVmData(v, res)\r\n            })\r\n        }\r\n        return Object.assign(res, formatVmData(vm))\r\n    }\r\n\r\n    /**\r\n     * 频率控制 返回函数连续调用时,func 执行频率限定为 次 / wait\r\n     * 自动合并 data\r\n     *\r\n     * @param  {function}   func      传入函数\r\n     * @param  {number}     wait      表示时间窗口的间隔\r\n     * @param  {object}     options   如果想忽略开始边界上的调用,传入{leading: false}。\r\n     *                                如果想忽略结尾边界上的调用,传入{trailing: false}\r\n     * @return {function}             返回客户调用函数\r\n     */\r\n    function throttle(func, wait, options) {\r\n        var context, args, result\r\n        var timeout = null\r\n        // 上次执行时间点\r\n        var previous = 0\r\n        if (!options) {\r\n            options = {}\r\n        }\r\n        // 延迟执行函数\r\n        function later() {\r\n            // 若设定了开始边界不执行选项,上次执行时间始终为0\r\n            previous = options.leading === false ? 0 : Date.now()\r\n            timeout = null\r\n            result = func.apply(context, args)\r\n            if (!timeout) {\r\n                context = args = null\r\n            }\r\n        }\r\n        return function(handle, data) {\r\n            var now = Date.now()\r\n            // 首次执行时,如果设定了开始边界不执行选项,将上次执行时间设定为当前时间。\r\n            if (!previous && options.leading === false) {\r\n                previous = now\r\n            }\r\n            // 延迟执行时间间隔\r\n            var remaining = wait - (now - previous)\r\n            context = this\r\n            args = args ? [handle, Object.assign(args[1], data)] : [handle, data]\r\n            // 延迟时间间隔remaining小于等于0,表示上次执行至此所间隔时间已经超过一个时间窗口\r\n            // remaining大于时间窗口wait,表示客户端系统时间被调整过\r\n            if (remaining <= 0 || remaining > wait) {\r\n                clearTimeout(timeout)\r\n                timeout = null\r\n                previous = now\r\n                result = func.apply(context, args)\r\n                if (!timeout) {\r\n                    context = args = null\r\n                }\r\n                // 如果延迟执行不存在,且没有设定结尾边界不执行选项\r\n            } else if (!timeout && options.trailing !== false) {\r\n                timeout = setTimeout(later, remaining)\r\n            }\r\n            return result\r\n        }\r\n    }\r\n\r\n    // 优化频繁的 setData: https://mp.weixin.qq.com/debug/wxadoc/dev/framework/performance/tips.html\r\n    var throttleSetData = throttle(function(handle, data) {\r\n        handle(data)\r\n    }, 50)\r\n\r\n    function getPage(vm) {\r\n        var rootVueVM = vm.$root\r\n        var ref = rootVueVM.$mp || {}\r\n        var mpType = ref.mpType\r\n        if (mpType === void 0) mpType = \"\"\r\n        var page = ref.page\r\n\r\n        // 优化后台态页面进行 setData: https://mp.weixin.qq.com/debug/wxadoc/dev/framework/performance/tips.html\r\n        if (mpType === \"app\" || !page || typeof page.setData !== \"function\") {\r\n            return\r\n        }\r\n        return page\r\n    }\r\n\r\n    // 优化每次 setData 都传递大量新数据\r\n    function updateDataToMP() {\r\n        var page = getPage(this)\r\n        if (!page) {\r\n            return\r\n        }\r\n\r\n        var data = JSON.parse(JSON.stringify(formatVmData(this)))\n        //fixed by xxxxxx\r\n        throttleSetData(page.setData.bind(page), diff(data, page.data))\r\n    }\r\n\r\n    function initDataToMP() {\r\n        var page = getPage(this)\r\n        if (!page) {\r\n            return\r\n        }\r\n\r\n        var data = collectVmData(this.$root)\n        //fixed by xxxxxx\r\n        page.setData(JSON.parse(JSON.stringify(data)))\r\n    }\r\n\r\n    function getVM(vm, comkeys) {\r\n        if (comkeys === void 0) comkeys = []\r\n\r\n        var keys = comkeys.slice(1)\r\n        if (!keys.length) {\r\n            return vm\r\n        }\r\n\r\n        return keys.reduce(function(res, key) {\r\n            var len = res.$children.length\r\n            for (var i = 0; i < len; i++) {\r\n                var v = res.$children[i]\r\n                var k = getComKey(v)\r\n                if (k === key) {\r\n                    res = v\r\n                    return res\r\n                }\r\n            }\r\n            return res\r\n        }, vm)\r\n    }\r\n\r\n    function getHandle(vnode, eventid, eventTypes) {\r\n        if (eventTypes === void 0) eventTypes = []\r\n\r\n        var res = []\r\n        if (!vnode || !vnode.tag) {\r\n            return res\r\n        }\r\n\r\n        var ref = vnode || {}\r\n        var data = ref.data\r\n        if (data === void 0) data = {}\r\n        var children = ref.children\r\n        if (children === void 0) children = []\r\n        var componentInstance = ref.componentInstance\r\n        if (componentInstance) {\r\n            // 增加 slot 情况的处理\r\n            // Object.values 会多增加几行编译后的代码\r\n            Object.keys(componentInstance.$slots).forEach(function(slotKey) {\r\n                var slot = componentInstance.$slots[slotKey]\r\n                var slots = Array.isArray(slot) ? slot : [slot]\r\n                slots.forEach(function(node) {\r\n                    res = res.concat(getHandle(node, eventid, eventTypes))\r\n                })\r\n            })\r\n        } else {\r\n            // 避免遍历超出当前组件的 vm\r\n            children.forEach(function(node) {\r\n                res = res.concat(getHandle(node, eventid, eventTypes))\r\n            })\r\n        }\r\n\r\n        var attrs = data.attrs\r\n        var on = data.on\r\n        if (attrs && on && attrs[\"eventid\"] === eventid) {\r\n            eventTypes.forEach(function(et) {\r\n                var h = on[et]\r\n                if (typeof h === \"function\") {\r\n                    res.push(h)\r\n                } else if (Array.isArray(h)) {\r\n                    res = res.concat(h)\r\n                }\r\n            })\r\n            return res\r\n        }\r\n\r\n        return res\r\n    }\r\n\r\n    function getWebEventByMP(e) {\r\n        var type = e.type\r\n        var timeStamp = e.timeStamp\r\n        var touches = e.touches\r\n        var detail = e.detail\r\n        if (detail === void 0) detail = {}\r\n        var target = e.target\r\n        if (target === void 0) target = {}\r\n        var currentTarget = e.currentTarget\r\n        if (currentTarget === void 0) currentTarget = {}\r\n        var x = detail.x\r\n        var y = detail.y\r\n        var event = {\r\n            mp: e,\r\n            type: type,\r\n            timeStamp: timeStamp,\r\n            x: x,\r\n            y: y,\r\n            target: Object.assign({}, target, detail),\r\n            detail: detail, //fixed by xxxxxx\r\n            currentTarget: currentTarget,\r\n            stopPropagation: noop,\r\n            preventDefault: noop\r\n        }\r\n\r\n        if (touches && touches.length) {\r\n            Object.assign(event, touches[0])\r\n            event.touches = touches\r\n        }\r\n        return event\r\n    }\r\n\r\n    function handleProxyWithVue(e) {\r\n        var rootVueVM = this.$root\r\n        var type = e.type\r\n        var target = e.target\r\n        if (target === void 0) target = {}\r\n        var currentTarget = e.currentTarget\r\n        var ref = currentTarget || target\r\n        var dataset = ref.dataset\r\n        if (dataset === void 0) dataset = {}\r\n        var comkey = dataset.comkey\r\n        if (comkey === void 0) comkey = \"\"\r\n        var eventid = dataset.eventid\r\n        var vm = getVM(rootVueVM, comkey.split(\",\"))\r\n\r\n        if (!vm) {\r\n            return\r\n        }\r\n\r\n        var webEventTypes = eventTypeMap[type] || [type]\r\n        var handles = getHandle(vm._vnode, eventid, webEventTypes)\r\n\r\n        // TODO, enevt 还需要处理更多\r\n        // https://developer.mozilla.org/zh-CN/docs/Web/API/Event\r\n        if (handles.length) {\r\n            var event = getWebEventByMP(e)\r\n            if (handles.length === 1) {\r\n                var result = handles[0](event)\r\n                return result\r\n            }\r\n            handles.forEach(function(h) {\r\n                return h(event)\r\n            })\r\n        }\r\n    }\r\n\r\n    // for platforms\r\n    // import config from 'core/config'\r\n    // install platform specific utils\r\n    Vue$3.config.mustUseProp = mustUseProp\r\n    Vue$3.config.isReservedTag = isReservedTag\r\n    Vue$3.config.isReservedAttr = isReservedAttr\r\n    Vue$3.config.getTagNamespace = getTagNamespace\r\n    Vue$3.config.isUnknownElement = isUnknownElement\r\n\r\n    // install platform patch function\r\n    Vue$3.prototype.__patch__ = patch\r\n\r\n    // public mount method\r\n    Vue$3.prototype.$mount = function(el, hydrating) {\r\n        var this$1 = this\r\n\r\n        // el = el && inBrowser ? query(el) : undefined\r\n        // return mountComponent(this, el, hydrating)\r\n\r\n        // 初始化小程序生命周期相关\r\n        var options = this.$options\r\n\r\n        if (options && (options.render || options.mpType)) {\r\n            var mpType = options.mpType\r\n            if (mpType === void 0) mpType = \"page\"\r\n            return this._initMP(mpType, function() {\r\n                return mountComponent(this$1, undefined, undefined)\r\n            })\r\n        } else {\r\n            return mountComponent(this, undefined, undefined)\r\n        }\r\n    }\r\n\r\n    // for mp\r\n    Vue$3.prototype._initMP = initMP\r\n\r\n    Vue$3.prototype.$updateDataToMP = updateDataToMP\r\n    Vue$3.prototype._initDataToMP = initDataToMP\r\n\r\n    Vue$3.prototype.$handleProxyWithVue = handleProxyWithVue\r\n\r\n    /*  */\r\n\r\n    return Vue$3\r\n})\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=D:/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/mpvue/index.js");

/***/ }),

/***/ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js":
/*!********************************************************************!*\
  !*** ./node_modules/vue-loader/lib/runtime/componentNormalizer.js ***!
  \********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n\n\n//# sourceURL=D:/HBuilderX/plugins/uniapp-cli/node_modules/vue-loader/lib/runtime/componentNormalizer.js");

/***/ }),

/***/ "./node_modules/webpack/buildin/global.js":
/*!***********************************!*\
  !*** (webpack)/buildin/global.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=D:/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js");

/***/ }),

/***/ "E:\\appImg\\app\\pages.json":
/*!********************************!*\
  !*** E:/appImg/app/pages.json ***!
  \********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n//# sourceURL=E:/appImg/app/pages.json");

/***/ })

}]);