You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2017/08/10 09:08:10 UTC

[1/8] incubator-weex git commit: + [ios] add array buffer support

Repository: incubator-weex
Updated Branches:
  refs/heads/0.16-dev 5894ef6b6 -> e37769951


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/pre-build/native-bundle-main.js
----------------------------------------------------------------------
diff --git a/pre-build/native-bundle-main.js b/pre-build/native-bundle-main.js
index e24c730..c301681 100644
--- a/pre-build/native-bundle-main.js
+++ b/pre-build/native-bundle-main.js
@@ -1,8 +1,26016 @@
-(this.nativeLog||function(e){console.log(e)})("START JS FRAMEWORK 0.21.4, Build 2017-07-26 11:48."),this.getJSFMVersion=function(){return"0.21.4"};var global=this,process={env:{}},setTimeout=global.setTimeout;!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(0,function(){"use strict";function e(e){Jn.Document=e.Document,Jn.Element=e.Element,Jn.Comment=e.Comment,Jn.sendTasks=e.sendTasks}function t(e){}function n(e){}function r(e){}function o(e,t,n){}function i(e,t,n,r,o){var i=new Jn.Document(e,n.bundleUrl),a={},s=0;i.addCallback=function(e){return s++,a[s]=e,s},i.handleCallback=function(e,t,n){var r=a[e];return n&&delete a[e],r(t)},Hn[e]=i;var u=Object.assign({Document:Jn.Document,Element:Jn.Element,Comment:Jn.Comment,sendTasks:Jn.sendTasks,id:e,options:n,data:r,document:i},o),c=[],l=[];for(var f in u)c.push(f),l.push(u[f]);return c.push(t),(new(Function.prototype.bind.apply(Function,[null].concat(c)))).apply
 (void 0,l)}function a(e,t){}function s(e){delete Hn[e]}function u(e){return Hn[e].body.toJSON()}function c(e,t){var n={fireEvent:function(e,t,n,r,o){var i=Hn[e],a=i.getRef(t);return i.fireEvent(a,n,r,o)},callback:function(e,t,n,r){return Hn[e].handleCallback(t,n,r)}};if(Hn[e]&&Array.isArray(t)){var r=[];return t.forEach(function(t){var o=n[t.method],i=[].concat(t.args);"function"==typeof o&&(i.unshift(e),r.push(o.apply(void 0,i)))}),r}}function l(e){return e&&e.__esModule?e.default:e}function f(e,t){return t={exports:{}},e(t,t.exports),t.exports}function d(e){console.warn("[JS Framework] Vm#$ is deprecated, please use Vm#$vm instead");var t=this._ids[e];if(t)return t.vm}function p(e){var t=this._ids[e];if(t)return t.el}function h(e){var t=this._ids[e];if(t)return t.vm}function v(e){return this._app.differ.then(function(){e()})}function m(e,t){console.warn("[JS Framework] Vm#$scrollTo is deprecated, please use \"require('@weex-module/dom').scrollTo(el, options)\" instead");var n=this
 .$el(e);if(n){this._app.requireModule("dom").scrollToElement(n.ref,{offset:t})}}function y(e,t,n){var r=this,o=this.$el(e);if(o&&t&&t.styles){this._app.requireModule("animation").transition(o.ref,t,function(){for(var e=[],i=arguments.length;i--;)e[i]=arguments[i];r._setStyle(o,t.styles),n&&n.apply(void 0,e)})}}function _(e){var t=this._app.options;return"function"==typeof e&&(console.warn("[JS Framework] the callback of Vm#$getConfig(callback) is deprecated, this api now can directly RETURN config info."),e(t)),t}function g(e,t){console.warn("[JS Framework] Vm#$sendHttp is deprecated, please use \"require('@weex-module/stream').sendHttp(params, callback)\" instead"),this._app.requireModule("stream").sendHttp(e,t)}function b(e){console.warn("[JS Framework] Vm#$openURL is deprecated, please use \"require('@weex-module/event').openURL(url)\" instead"),this._app.requireModule("event").openURL(e)}function w(e){console.warn("[JS Framework] Vm#$setTitle is deprecated, please use \"require(
 '@weex-module/pageInfo').setTitle(title)\" instead"),this._app.requireModule("pageInfo").setTitle(e)}function O(e,t){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];console.warn("[JS Framework] Vm#$call is deprecated, please use \"require('@weex-module/moduleName')\" instead");var o=this._app.requireModule(e);o&&o[t]&&o[t].apply(o,n)}function E(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];if("function"==typeof Object.assign)Object.assign.apply(Object,[e].concat(t));else{var r=t.shift();for(var o in r)e[o]=r[o];t.length&&E.apply(void 0,[e].concat(t))}return e}function x(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function S(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}function C(e,t){return wr.call(e,t)}function k(e,t){return function(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}}function j(e){return null!==e&&"object"==typeof e}function A(e){retur
 n Or.call(e)===Er}function I(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function T(){return"object"==typeof nativeSet?nativeSet.create():new zn}function N(e){var t=Object.prototype.toString.call(e);return t.substring(8,t.length-1).toLowerCase()}function P(e){return e.replace(Sr,"").replace(Cr,"")}function M(e){return e.replace(jr,"")}function $(){this.id=Pr++,this.subs=[]}function R(e){$.target&&Mr.push($.target),$.target=e}function D(){$.target=Mr.pop()}function F(){$.target=null,Mr=[]}function L(e,t,n,r){r&&E(this,r);var o="function"==typeof t;this.vm=e,e._watchers.push(this),this.expression=t,this.cb=n,this.id=++$r,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=T(),this.newDepIds=T(),o&&(this.getter=t),this.value=this.lazy?void 0:this.get(),this.queued=this.shallow=!1}function U(e,t){var n,r,o,i;if(t||(t=Rr,t.clear()),o=Array.isArray(e),i=j(e),o||i){if(e.__ob__){var a=e.__ob__.dep.id;if(t.has(a))return;t.add(a)}if(o)for(n=e.length;n--;)U(e[n
 ],t);else if(i)for(r=Object.keys(e),n=r.length;n--;)U(e[r[n]],t)}}function B(e){if(this.value=e,this.dep=new $,x(e,"__ob__",this),Array.isArray(e)){(xr?V:q)(e,Fr,Lr),this.observeArray(e)}else this.walk(e)}function V(e,t){e.__proto__=t}function q(e,t,n){for(var r=0,o=n.length;r<o;r++){var i=n[r];x(e,i,t[i])}}function W(e,t){if(j(e)){var n;return C(e,"__ob__")&&e.__ob__ instanceof B?n=e.__ob__:(Array.isArray(e)||A(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new B(e)),n&&t&&n.addVm(t),n}}function z(e,t,n){var r=new $,o=Object.getOwnPropertyDescriptor(e,t);if(!o||!1!==o.configurable){var i=o&&o.get,a=o&&o.set,s=W(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=i?i.call(e):n;if($.target&&(r.depend(),s&&s.dep.depend(),Array.isArray(t)))for(var o=void 0,a=0,u=t.length;a<u;a++)(o=t[a])&&o.__ob__&&o.__ob__.dep.depend();return t},set:function(t){t!==(i?i.call(e):n)&&(a?a.call(e,t):n=t,s=W(t),r.notify())}})}}function J(e,t,n){if(Array.isArray(e))return e.splice(
 t,1,n);if(C(e,t))return void(e[t]=n);if(e._isVue)return void J(e._data,t,n);var r=e.__ob__;if(!r)return void(e[t]=n);if(r.convert(t,n),r.dep.notify(),r.vms)for(var o=r.vms.length;o--;){var i=r.vms[o];G(i,t)}return n}function H(e,t){if(C(e,t)){delete e[t];var n=e.__ob__;if(!n)return void(e._isVue&&delete e._data[t]);if(n.dep.notify(),n.vms)for(var r=n.vms.length;r--;){var o=n.vms[r];X(o,t)}}}function G(e,t){(Ur.indexOf(t)>-1||!I(t))&&Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return e._data[t]},set:function(n){e._data[t]=n}})}function X(e,t){I(t)||delete e[t]}function K(e){e._watchers=[],Z(e),Y(e),te(e)}function Z(e){var t=e._data;A(t)||(t={});for(var n=Object.keys(t),r=n.length;r--;)G(e,n[r]);W(t,e)}function Q(){}function Y(e){var t=e._computed;if(t)for(var n in t){var r=t[n],o={enumerable:!0,configurable:!0};"function"==typeof r?(o.get=ee(r,e),o.set=Q):(o.get=r.get?!1!==r.cache?ee(r.get,e):k(r.get,e):Q,o.set=r.set?k(r.set,e):Q),Object.defineProperty(e,n
 ,o)}}function ee(e,t){var n=new L(t,e,null,{lazy:!0});return function(){return n.dirty&&n.evaluate(),$.target&&n.depend(),n.value}}function te(e){var t=e._methods;if(t)for(var n in t)e[n]=t[n]}function ne(e){var t=e.type,n=Vr[t];if("object"==typeof n)for(var r in n)if(null==e[r])e[r]=n[r];else if("object"===N(e[r])&&"object"===N(n[r]))for(var o in n[r])null==e[r][o]&&(e[r][o]=n[r][o])}function re(e,t,n){ce(e,t,n.id,e),le(e,t,n.attr),de(e,t,n.classList),pe(e,t,n.style),ve(e,t,n.events)}function oe(e,t,n,r){t=t||{},n=n||{};var o=t._options||{},i=o.props;Array.isArray(i)&&(i=i.reduce(function(e,t){return e[t]=!0,e},{})),ae(r,i,e,t),ae(n.attr,i,e,t)}function ie(e,t,n,r){void 0===r&&(r={}),ue(n.classList,e,t),se(n.style,e,t),r.children?r.children[r.children.length-1]._vm=t:r._vm=t}function ae(e,t,n,r){if(e){for(var o in e)!function(o){if(!t||t[o]){var i=e[o];if("function"==typeof i){var a=_e(n,i,function(e){r[o]=e});r[o]=a}else r[o]=i}}(o)}}function se(e,t,n){for(var r in e)!function(r){
 var o=e[r];if("function"==typeof o){var i=_e(t,o,function(e){n._rootEl&&n._rootEl.setStyle(r,e)});n._rootEl.setStyle(r,i)}else n._rootEl&&n._rootEl.setStyle(r,o)}(r)}function ue(e,t,n){function r(e,t){"array"===N(e)&&e.unshift(t)}var o=t._options&&t._options.style||{};if(n._rootEl){var i="@originalRootEl";if(o[i]=n._rootEl.classStyle,"function"==typeof e){var a=_e(t,e,function(e){r(e,i),fe(n._rootEl,o,e)});r(a,i),fe(n._rootEl,o,a)}else null!=e&&(r(e,i),fe(n._rootEl,o,e))}}function ce(e,t,n,r){var o=Object.create(null);if(Object.defineProperties(o,{vm:{value:r,writable:!1,configurable:!1},el:{get:function(){return t||r._rootEl},configurable:!1}}),"function"==typeof n){var i=n;n=i.call(e),(n||0===n)&&(e._ids[n]=o),_e(e,i,function(t){t&&(e._ids[t]=o)})}else n&&"string"==typeof n&&(e._ids[n]=o)}function le(e,t,n){me(e,t,"attr",n)}function fe(e,t,n){for(var r={},o=n.length,i=0;i<o;i++)!function(e){var o=t[n[e]];o&&Object.keys(o).forEach(function(e){r[e]=o[e]})}(i);e.setClassStyle(r)}func
 tion de(e,t,n){if("function"==typeof n||Array.isArray(n)){if(Array.isArray(n)&&!n.length)return void t.setClassStyle({});var r=e._options&&e._options.style||{};if("function"==typeof n){var o=_e(e,n,function(e){fe(t,r,e)});fe(t,r,o)}else fe(t,r,n)}}function pe(e,t,n){me(e,t,"style",n)}function he(e,t,n,r){t.addEvent(n,k(r,e))}function ve(e,t,n){if(n)for(var r=Object.keys(n),o=r.length;o--;){var i=r[o],a=n[i];"string"==typeof a&&((a=e[a])||console.warn('[JS Framework] The event handler "'+a+'" is not defined.')),he(e,t,i,a)}}function me(e,t,n,r){if(r)for(var o=Object.keys(r),i=o.length;i--;){var a=o[i],s=r[a];"function"==typeof s?ye(e,t,n,a,s):t[qr[n]](a,s)}}function ye(e,t,n,r,o){var i=qr[n],a=_e(e,o,function(n){function o(){t[i](r,n)}var a=e&&e._app&&e._app.differ;a?a.append("element",t.depth,t.ref,o):o()});t[i](r,a)}function _e(e,t,n){return e._static?t.call(e,e):new L(e,t,function(e,t){"object"!=typeof e&&e===t||n(e)}).value}function ge(e,t){return e._app.doc.createBody(t)}functio
 n be(e,t){return e._app.doc.createElement(t)}function we(e,t){var n=Oe(e),r=Ee(e),o=Wr++;if(t.element){var i=t.updateMark;i?(i.element&&(i=i.end),t.element.insertAfter(r,i),t.element.insertAfter(n,i),t.updateMark=r):(t.element.insertBefore(n,t.end),t.element.insertBefore(r,t.end)),t=t.element}else t.appendChild(n),t.appendChild(r);return{start:n,end:r,element:t,blockId:o}}function Oe(e){return e._app.doc.createComment("start")}function Ee(e){return e._app.doc.createComment("end")}function xe(e,t,n){if(n.element){var r=n.end,o=n.updateMark;if(n.children&&n.children.push(t),o){var i=Se(e,t,o);return n.updateMark=t.element?t.end:t,i}if(!t.element)return n.element.insertBefore(t,r);n.element.insertBefore(t.start,r),n.element.insertBefore(t.end,r)}else{if(!t.element)return n.appendChild(t);n.appendChild(t.start),n.appendChild(t.end)}}function Se(e,t,n){return t.element?ke(t,n):Ce(t,n)}function Ce(e,t){var n=t.parentNode;if(n)return n.insertAfter(e,t)}function ke(e,t){var n=t.parentNode;i
 f(n){for(var r,o=e.start,i=[o];o&&o!==e.end;)o=o.nextSibling,i.push(o);var a=t;return i.every(function(e){return r=n.insertAfter(e,a),a=e,-1!==r}),r}}function je(e,t,n){void 0===n&&(n=!1),t.element?Ie(t,n):Ae(t),t._vm&&t._vm.$emit("hook:destroyed")}function Ae(e){var t=e.parentNode;t&&t.removeChild(e)}function Ie(e,t){void 0===t&&(t=!1);for(var n=[],r=e.start.nextSibling;r&&r!==e.end;)n.push(r),r=r.nextSibling;t||Ae(e.start),n.forEach(function(e){Ae(e)}),t||Ae(e.end)}function Te(e){var t=e._options||{},n=t.template||{};t.replace?n.children&&1===n.children.length?Ne(e,n.children[0],e._parentEl):Ne(e,n.children,e._parentEl):Ne(e,n,e._parentEl),console.debug('[JS Framework] "ready" lifecycle in Vm('+e._type+")"),e.$emit("hook:ready"),e._ready=!0}function Ne(e,t,n,r){if(-1!==(e._app||{}).lastSignal){if(t.attr&&t.attr.hasOwnProperty("static")&&(e._static=!0),Pe(t))return void Le(e,t,n,r);if(r=r||{},Me(t))return console.debug('[JS Framework] compile "content" block by',t),void(e._content=
 we(e,n));if($e(t,r))return console.debug('[JS Framework] compile "repeat" logic by',t),void("document"===n.type?console.warn("[JS Framework] The root element does't support `repeat` directive!"):Ue(e,t,n));if(Re(t,r))return console.debug('[JS Framework] compile "if" logic by',t),void("document"===n.type?console.warn("[JS Framework] The root element does't support `if` directive!"):Be(e,t,n,r));var o=r.type||t.type;if(De(o,r))return void Ve(e,t,n,o,r);var i=o,a=Fe(e,t,i);if(a)return console.debug("[JS Framework] compile composed component by",t),void qe(e,a,t,n,i,r);console.debug("[JS Framework] compile native component by",t),We(e,t,n,i)}}function Pe(e){return Array.isArray(e)}function Me(e){return"content"===e.type||"slot"===e.type}function $e(e,t){return!t.hasOwnProperty("repeat")&&e.repeat}function Re(e,t){return!t.hasOwnProperty("shown")&&e.shown}function De(e,t){return"function"==typeof e&&!t.hasOwnProperty("type")}function Fe(e,t,n){var r;return e._app&&e._app.customComponentM
 ap&&(r=e._app.customComponentMap[n]),e._options&&e._options.components&&(r=e._options.components[n]),t.component&&(r=r||{}),r}function Le(e,t,n,r){var o=we(e,n);t.forEach(function(t){Ne(e,t,o,r)})}function Ue(e,t,n){var r=t.repeat,o="function"==typeof r,i=r.getter||r.expression||r;"function"!=typeof i&&(i=function(){return[]});var a=r.key||"$index",s=r.value||"$value",u=r.trackBy||t.trackBy||t.attr&&t.attr.trackBy,c=we(e,n);c.children=[],c.data=[],c.vms=[],Je(e,t,c,{getter:i,key:a,value:s,trackBy:u,oldStyle:o})}function Be(e,t,n,r){var o={shown:!0},i=we(e,n);n.element&&n.children&&n.children.push(i),r.repeat&&(o.repeat=r.repeat),He(e,t,i,o)}function Ve(e,t,n,r,o){var i=r.call(e),a=E({type:i},o),s=we(e,n);n.element&&n.children&&n.children.push(s),_e(e,r,function(n){var r=E({type:n},o);je(e,s,!0),Ne(e,t,s,r)}),Ne(e,t,s,a)}function qe(e,t,n,r,o,i){var a=e.constructor,s=new a(o,t,e,r,void 0,{"hook:init":function(){e._static&&(this._static=e._static),ce(e,null,n.id,this),this._externalBi
 nding={parent:e,template:n}},"hook:created":function(){oe(e,this,n,i.repeat)},"hook:ready":function(){this._content&&ze(e,n,this._content)}});ie(e,s,n,r)}function We(e,t,n,r){ne(t);var o;if("_documentElement"===n.ref?(console.debug("[JS Framework] compile to create body for "+r),o=ge(e,r)):(console.debug("[JS Framework] compile to create element for "+r),o=be(e,r)),!e._rootEl){e._rootEl=o;var i=e._externalBinding||{},a=i.template,s=i.parent;if(a&&a.events&&s&&o)for(var u in a.events){var c=s[a.events[u]];c&&o.addEvent(u,k(c,s))}}re(e,o,t),t.attr&&t.attr.append&&(t.append=t.attr.append),t.append&&(o.attr=o.attr||{},o.attr.append=t.append);var l="tree"===t.append,f=e._app||{};-1===f.lastSignal||l||(console.debug("[JS Framework] compile to append single node for",o),f.lastSignal=xe(e,o,n)),-1!==f.lastSignal&&ze(e,t,o),-1!==f.lastSignal&&l&&(console.debug("[JS Framework] compile to append whole tree for",o),f.lastSignal=xe(e,o,n))}function ze(e,t,n){var r=e._app||{},o=t.children;o&&o.le
 ngth&&o.every(function(t){return Ne(e,t,n),-1!==r.lastSignal})}function Je(e,t,n,r){function o(e,r,o){var a;c?(a=e,j(e)?(a[l]=r,a.hasOwnProperty("INDEX")||Object.defineProperty(a,"INDEX",{value:function(){console.warn('[JS Framework] "INDEX" in repeat is deprecated, please use "$index" instead')}})):(console.warn("[JS Framework] Each list item must be an object in old-style repeat, please use `repeat={{v in list}}` instead."),a={},a[l]=r,a[f]=e)):(a={},a[l]=r,a[f]=e);var s=Xe(o,a);i.push(s),Ne(s,t,n,{repeat:e})}var i=n.vms,a=n.children,s=r.getter,u=r.trackBy,c=r.oldStyle,l=r.key,f=r.value,d=Ge(e,n,s,"repeat",function(t){if(console.debug('[JS Framework] the "repeat" item has changed',t),n&&t){var r=a.slice(),s=i.slice(),d=n.data.slice(),p={},h={};t.forEach(function(e,t){var n=u?e[u]:c?e[l]:t;null!=n&&""!==n&&(p[n]=e)});var v=[];d.forEach(function(t,n){var o=u?t[u]:c?t[l]:n;p.hasOwnProperty(o)?(h[o]={item:t,index:n,key:o,target:r[n],vm:s[n]},v.push(t)):je(e,r[n])}),a.length=0,i.length
 =0,n.data=t.slice(),n.updateMark=n.start,t.forEach(function(t,r){var s=u?t[u]:c?t[l]:r,d=h[s];d?(d.item===v[0]?v.shift():(v.$remove(d.item),Se(e,d.target,n.updateMark,!0)),a.push(d.target),i.push(d.vm),c?d.vm=t:d.vm[f]=t,d.vm[l]=r,n.updateMark=d.target):o(t,r,e)}),delete n.updateMark}});n.data=d.slice(0),d.forEach(function(t,n){o(t,n,e)})}function He(e,t,n,r){var o=Ge(e,n,t.shown,"shown",function(o){console.debug('[JS Framework] the "if" item was changed',o),n&&!!n.display!=!!o&&(n.display=!!o,o?Ne(e,t,n,r):je(e,n,!0))});n.display=!!o,o&&Ne(e,t,n,r)}function Ge(e,t,n,r,o){var i=e&&e._app&&e._app.differ,a={},s=(t.element.depth||0)+1;return _e(e,n,function(e){a.latestValue=e,i&&!a.recorded&&i.append(r,s,t.blockId,function(){var e=a.latestValue;o(e),a.recorded=!1,a.latestValue=void 0}),a.recorded=!0})}function Xe(e,t){var n=Object.create(e);return n._data=t,Z(n),Y(n),n._realParent=e,e._static&&(n._static=e._static),n}function Ke(e,t){if(t instanceof Ke)return t;this.timestamp=Date.now(
 ),this.detail=t,this.type=e;var n=!1;this.stop=function(){n=!0},this.hasStopped=function(){return n}}function Ze(e,t){var n=this,r=this._vmEvents,o=r[e];if(o){var i=new Ke(e,t);o.forEach(function(e){e.call(n,i)})}}function Qe(e,t){var n=new Ke(e,t);this.$emit(e,n),!n.hasStopped()&&this._parent&&this._parent.$dispatch&&this._parent.$dispatch(e,n)}function Ye(e,t){var n=new Ke(e,t);this.$emit(e,n),!n.hasStopped()&&this._childrenVms&&this._childrenVms.forEach(function(t){t.$broadcast(e,n)})}function et(e,t){if(e&&"function"==typeof t){var n=this._vmEvents,r=n[e]||[];r.push(t),n[e]=r,"hook:ready"===e&&this._ready&&this.$emit("hook:ready")}}function tt(e,t){if(e){var n=this._vmEvents;if(!t)return void delete n[e];var r=n[e];r&&r.$remove(t)}}function nt(e,t){var n=e._options||{},r=n.events||{};for(var o in r)e.$on(o,r[o]);for(var i in t)e.$on(i,t[i]);zr.forEach(function(t){e.$on("hook:"+t,n[t])})}function rt(e,t,n,r,o,i){n=n||{},this._parent=n._realParent?n._realParent:n,this._app=n._app|
 |{},n._childrenVms&&n._childrenVms.push(this),!t&&this._app.customComponentMap&&(t=this._app.customComponentMap[e]),t=t||{};var a=t.data||{};this._options=t,this._methods=t.methods||{},this._computed=t.computed||{},this._css=t.style||{},this._ids={},this._vmEvents={},this._childrenVms=[],this._type=e,nt(this,i),console.debug('[JS Framework] "init" lifecycle in Vm('+this._type+")"),this.$emit("hook:init"),this._inited=!0,this._data="function"==typeof a?a():a,o&&E(this._data,o),K(this),console.debug('[JS Framework] "created" lifecycle in Vm('+this._type+")"),this.$emit("hook:created"),this._created=!0,t.methods&&t.methods.ready&&(console.warn('"exports.methods.ready" is deprecated, please use "exports.created" instead'),t.methods.ready.call(this)),this._app.doc&&(this._parentEl=r||this._app.doc.documentElement,Te(this))}function ot(e,t){for(var n in e)!function(n){var r=Jr[n];r||(r={},Jr[n]=r),e[n].forEach(function(e){"string"==typeof e&&(e={name:e}),r[e.name]&&!t||(r[e.name]=e)})}(n)
 }function it(e,t){var n=e.prototype;for(var r in t)n.hasOwnProperty(r)||(n[r]=t[r])}function at(e,t){var n=Jr[t],r={};for(var o in n)!function(n){Object.defineProperty(r,n,{configurable:!0,enumerable:!0,get:function(){return function(){for(var r=[],o=arguments.length;o--;)r[o]=arguments[o];return e.callTasks({module:t,method:n,args:r})}},set:function(r){if("function"==typeof r)return e.callTasks({module:t,method:n,args:[r]})}})}(o);return r}function st(e,t){return e.customComponentMap[t]}function ut(e,t,n){var r=e.customComponentMap;if(r[t])return void console.error("[JS Framework] define a component("+t+") that already exists");r[t]=n}function ct(e){if(Hr.valid(e))return e;e="string"==typeof e?e:"";for(var t=e.split("."),n=0,r=[];n<3;){var o="string"==typeof t[n]&&t[n]?t[n]:"0";r.push(o),n++}return r.join(".")}function lt(e,t,n){var r={isDowngrade:!0,errorType:1,code:1e3},o=e.toLowerCase();return r.errorMessage=function(e,t,n){return"Downgrade["+e+"] :: deviceInfo "+t+" matched cri
 teria "+n}(e,t,n),o.indexOf("osversion")>=0?r.code=1001:o.indexOf("appversion")>=0?r.code=1002:o.indexOf("weexversion")>=0?r.code=1003:o.indexOf("devicemodel")>=0&&(r.code=1004),r}function ft(e,t){t=t||global.WXEnvironment,t=A(t)?t:{};var n={isDowngrade:!1};if("function"===N(e)){var r=e.call(this,t,{semver:Hr,normalizeVersion:ct});r=!!r,n=r?lt("custom","","custom params"):n}else{e=A(e)?e:{};var o=t.platform||"unknow",i=o.toLowerCase(),a=e[i]||{};for(var s in t){var u=s,c=u.toLowerCase(),l=t[s],f=c.indexOf("version")>=0,d=c.indexOf("devicemodel")>=0,p=a[s];if(p&&f){var h=ct(p),v=ct(t[s]);if(Hr.satisfies(v,h)){n=lt(u,l,p);break}}else if(d){var m="array"===N(p)?p:[p];if(m.indexOf(l)>=0){n=lt(u,l,p);break}}}}return n}function dt(e,t){if(void 0===t&&(t={}),e&&e.callTasks)return e.callTasks([{module:"meta",method:"setViewport",args:[t]}])}function pt(e,t,n,r){console.debug("[JS Framework] bootstrap for "+t);var o;if(Ar(t))o=P(t);else{if(!Nr(t))return new Error("Wrong component name: "+t);
 if(o=M(t),!st(e,o))return new Error("It's not a component: "+t)}if(n=A(n)?n:{},"string"==typeof n.transformerVersion&&"string"==typeof global.transformerVersion&&!Hr.satisfies(n.transformerVersion,global.transformerVersion))return new Error("JS Bundle version: "+n.transformerVersion+" not compatible with "+global.transformerVersion);var i=ft(n.downgrade);if(i.isDowngrade)return e.callTasks([{module:"instanceWrap",method:"error",args:[i.errorType,i.code,i.errorMessage]}]),new Error("Downgrade["+i.code+"]: "+i.errorMessage);n.viewport&&dt(e,n.viewport),e.vm=new rt(o,null,{_app:e},null,r)}function ht(e,t,n){console.warn("[JS Framework] Register is deprecated, please install lastest transformer."),ut(e,t,n)}function vt(e,t){console.debug("[JS Framework] Refresh with",t,"in instance["+e.id+"]");var n=e.vm;return n&&t?("function"==typeof n.refreshData?n.refreshData(t):E(n,t),e.differ.flush(),void e.doc.taskCenter.send("dom",{action:"refreshFinish"},[])):new Error('invalid data "'+t+'"')}f
 unction mt(e){console.debug("[JS Framework] Destory an instance("+e.id+")"),e.vm&&yt(e.vm),e.id="",e.options=null,e.blocks=null,e.vm=null,e.doc.taskCenter.destroyCallback(),e.doc.destroy(),e.doc=null,e.customComponentMap=null,e.commonModules=null}function yt(e){if(delete e._app,delete e._computed,delete e._css,delete e._data,delete e._ids,delete e._methods,delete e._options,delete e._parent,delete e._parentEl,delete e._rootEl,e._watchers){for(var t=e._watchers.length;t--;)e._watchers[t].teardown();delete e._watchers}if(e._childrenVms){for(var n=e._childrenVms.length;n--;)yt(e._childrenVms[n]);delete e._childrenVms}console.debug('[JS Framework] "destroyed" lifecycle in Vm('+e._type+")"),e.$emit("hook:destroyed"),delete e._type,delete e._vmEvents}function _t(e){var t=e.doc||{},n=t.body||{};return n.toJSON?n.toJSON():{}}function gt(e,t,n,r,o){if(console.debug('[JS Framework] Fire a "'+n+'" event on an element('+t+") in instance("+e.id+")"),Array.isArray(t))return void t.some(function(t
 ){return!1!==gt(e,t,n,r)});var i=e.doc.getRef(t);if(i){var a=e.doc.fireEvent(i,n,r,o);return e.differ.flush(),e.doc.taskCenter.send("dom",{action:"updateFinish"},[]),a}return new Error('invalid element reference "'+t+'"')}function bt(e,t,n,r){console.debug("[JS Framework] Invoke a callback("+t+") with",n,"in instance("+e.id+")");var o=e.doc.taskCenter.callback(t,n,r);return wt(e),e.doc.taskCenter.send("dom",{action:"updateFinish"},[]),o}function wt(e){e.differ.flush()}function Ot(e,t){var n;return"array"!==N(t)&&(t=[t]),t.forEach(function(t){n=e.doc.taskCenter.send("module",{module:t.module,method:t.method},t.args)}),n}function Et(e,t,n,r){console.debug("[JS Framework] Intialize an instance with:\n",n);var o,i=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return Gr.apply(void 0,[e].concat(t))},a=function(t,r,i){o=pt(e,t,r,i||n),wt(e),e.doc.listener.createFinish(),console.debug("[JS Framework] After intialized an instance("+e.id+")")},s=rt,u=function(){for(var t=[
 ],n=arguments.length;n--;)t[n]=arguments[n];return ht.apply(void 0,[e].concat(t))},c=function(t,n){o=pt(e,t,{},n)},l=function(t){return function(n){o=pt(e,t,{},n)}},f=e.doc,d=function(t){return e.requireModule(P(t))},p={config:e.options,define:i,bootstrap:a,requireModule:d,document:f,Vm:s};Object.freeze(p);var h;"function"==typeof t?h=t.toString().substr(12):t&&(h=t.toString()),h='(function(global){\n\n"use strict";\n\n '+h+" \n\n})(Object.create(this))";var v=global.WXEnvironment,m={};if(v&&"Web"!==v.platform){var y=e.requireModule("timer");Object.assign(m,{setTimeout:function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=function(){t[0].apply(t,t.slice(2))};return y.setTimeout(r,t[1]),e.doc.taskCenter.callbackManager.lastCallbackId.toString()},setInterval:function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=function(){t[0].apply(t,t.slice(2))};return y.setInterval(r,t[1]),e.doc.taskCenter.callbackManager.lastCallbackId.toString()},clearTimeout:f
 unction(e){y.clearTimeout(e)},clearInterval:function(e){y.clearInterval(e)}})}var _=Object.assign({define:i,require:l,bootstrap:a,register:u,render:c,__weex_define__:i,__weex_bootstrap__:a,__weex_document__:f,__weex_require__:d,__weex_viewmodel__:s,weex:p},m,r);return St(_,h)||xt(_,h),o}function xt(e,t){var n=[],r=[];for(var o in e)n.push(o),r.push(e[o]);return n.push(t),(new(Function.prototype.bind.apply(Function,[null].concat(n)))).apply(void 0,r)}function St(e,t){if("function"!=typeof compileAndRunBundle)return!1;var n=void 0,r=!1,o="(function (",i=[],a=[];for(var s in e)i.push(s),a.push(e[s]);for(var u=0;u<i.length-1;++u)o+=i[u],o+=",";o+=i[i.length-1],o+=") {",o+=t,o+="} )";try{var c=e.weex||{},l=c.config||{};n=compileAndRunBundle(o,l.bundleUrl,l.bundleDigest,l.codeCachePath),n&&"function"==typeof n&&(n.apply(void 0,a),r=!0)}catch(e){console.error(e)}return r}function Ct(e,t){var n=e[t];for(var r in n)n[r]()}function kt(e,t){var n=e[t];for(var r in n){n[r].forEach(function(e){e
 ()})}}function jt(e,t){this.id=e,this.options=t||{},this.vm=null,this.customComponentMap={},this.commonModules={},this.doc=new Br.Document(e,this.options.bundleUrl,null,Br.Listener),this.differ=new Xr(e)}function At(e,t,n,r,o){var i=o||{},a=i.services;F();var s=Kr[e];n=n||{};var u;return s?u=new Error('invalid instance id "'+e+'"'):(s=new jt(e,n),Kr[e]=s,u=Et(s,t,r,a)),u}function It(e){Br.Document=e.Document,Br.Element=e.Element,Br.Comment=e.Comment,Br.sendTasks=e.sendTasks,Br.Listener=e.Listener}function Tt(e,t){var n=Kr[e];return n?vt(n,t):new Error('invalid instance id "'+e+'"')}function Nt(e){"function"==typeof markupState&&markupState(),F();var t=Kr[e];if(!t)return new Error('invalid instance id "'+e+'"');mt(t),delete Kr[e];var n=Math.round(e);if(n>0){n%18||"function"!=typeof notifyTrimMemory||notifyTrimMemory()}return Kr}function Pt(e){Array.isArray(e)&&e.forEach(function(e){e&&("string"==typeof e?Zr[e]=!0:"object"==typeof e&&"string"==typeof e.type&&(Zr[e.type]=e))})}function
  Mt(e){"object"==typeof e&&ot(e)}function $t(e){"object"==typeof e&&it(rt,e)}function Rt(e,t){if(Kr[e]&&Array.isArray(t)){var n=[];return t.forEach(function(t){var r=Qr[t.method],o=[].concat(t.args);"function"==typeof r&&(o.unshift(e),n.push(r.apply(void 0,o)))}),n}return new Error('invalid instance id "'+e+'" or tasks')}function Dt(e){var t=Kr[e];return t?_t(t):new Error('invalid instance id "'+e+'"')}function Ft(){if(Ut(),global.WXEnvironment&&"Web"!==global.WXEnvironment.platform)global.console={debug:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("debug")&&global.nativeLog.apply(global,Vt(e).concat(["__DEBUG"]))},log:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("log")&&global.nativeLog.apply(global,Vt(e).concat(["__LOG"]))},info:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("info")&&global.nativeLog.apply(global,Vt(e).concat(["__INFO"]))},warn:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt
 ("warn")&&global.nativeLog.apply(global,Vt(e).concat(["__WARN"]))},error:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("error")&&global.nativeLog.apply(global,Vt(e).concat(["__ERROR"]))}};else{var e=console.debug,t=console.log,n=console.info,r=console.warn,o=console.error;console.__ori__={debug:e,log:t,info:n,warn:r,error:o},console.debug=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("debug")&&console.__ori__.debug.apply(console,e)},console.log=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("log")&&console.__ori__.log.apply(console,e)},console.info=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("info")&&console.__ori__.info.apply(console,e)},console.warn=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("warn")&&console.__ori__.warn.apply(console,e)},console.error=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Bt("error")&&console.__ori__.error.apply(consol
 e,e)}}}function Lt(){$u={},global.console=Ru}function Ut(){Mu.forEach(function(e){var t=Mu.indexOf(e);$u[e]={},Mu.forEach(function(n){Mu.indexOf(n)<=t&&($u[e][n]=!0)})})}function Bt(e){var t=global.WXEnvironment&&global.WXEnvironment.logLevel||"log";return $u[t]&&$u[t][e]}function Vt(e){return e.map(function(e){return e="[object object]"===Object.prototype.toString.call(e).toLowerCase()?JSON.stringify(e):String(e)})}function qt(){if(void 0===setTimeout&&"function"==typeof Fu){var e={},t=0;global.setTimeout=function(n,r){e[++t]=n,Fu(t.toString(),r)},global.setTimeoutCallback=function(t){"function"==typeof e[t]&&(e[t](),delete e[t])}}}function Wt(){global.setTimeout=Du,global.setTimeoutCallback=null}function zt(){Object.freeze(Object),Object.freeze(Array),Jt(),Object.freeze(Array.prototype),Object.freeze(String.prototype),Object.freeze(Number.prototype),Object.freeze(Boolean.prototype),Ht(),Object.freeze(Date.prototype),Object.freeze(RegExp.prototype)}function Jt(){var e=Object.protot
 ype,t="Object.prototype";Gt(e,"__defineGetter__",t),Gt(e,"__defineSetter__",t),Gt(e,"__lookupGetter__",t),Gt(e,"__lookupSetter__",t),Gt(e,"constructor",t),Gt(e,"hasOwnProperty",t),Gt(e,"isPrototypeOf",t),Gt(e,"propertyIsEnumerable",t),Gt(e,"toLocaleString",t),Gt(e,"toString",t),Gt(e,"valueOf",t),Object.seal(e)}function Ht(){var e=Error.prototype,t="Error.prototype";Gt(e,"name",t),Gt(e,"message",t),Gt(e,"toString",t),Gt(e,"constructor",t),Object.seal(e)}function Gt(e,t,n){if(e.hasOwnProperty(t)){var r=e[t];Object.defineProperty(e,t,{get:function(){return r},set:function(r){if(this===e)throw Error("Cannot assign to read only property "+t+" of "+n);return Object.defineProperty(this,t,{value:r,writable:!0}),r}})}}function Xt(e,t){e&&(Uu[e]=t)}function Kt(e){return Uu[e]}function Zt(e){delete Uu[e]}function Qt(e){var t=Uu[e];return t&&t.taskCenter?t.taskCenter:null}function Yt(){return(Bu++).toString()}function en(e,t,n){var r=e.documentElement;if(!(r.pureChildren.length>0||t.parentNode)
 ){var o=r.children,i=o.indexOf(n);i<0?o.push(t):o.splice(i,0,t),1===t.nodeType?("body"===t.role?(t.docId=e.id,t.ownerDocument=e,t.parentNode=r,rn(t,r)):(t.children.forEach(function(e){e.parentNode=t}),nn(e,t),t.docId=e.id,t.ownerDocument=e,rn(t,r),delete e.nodeMap[t.nodeId]),r.pureChildren.push(t),tn(e,t)):(t.parentNode=r,e.nodeMap[t.ref]=t)}}function tn(e,t){var n=t.toJSON(),r=n.children;delete n.children;var o=e.taskCenter.send("dom",{action:"createBody"},[n]);return r&&r.forEach(function(t){o=e.taskCenter.send("dom",{action:"addElement"},[n.ref,t,-1])}),o}function nn(e,t){t.role="body",t.depth=1,delete e.nodeMap[t.nodeId],t.ref="_root",e.nodeMap._root=t,e.body=t}function rn(e,t){e.parentNode=t,t.docId&&(e.docId=t.docId,e.ownerDocument=t.ownerDocument,e.ownerDocument.nodeMap[e.nodeId]=e,e.depth=t.depth+1),e.children.forEach(function(t){rn(t,e)})}function on(e){for(;e;){if(1===e.nodeType)return e;e=e.nextSibling}}function an(e){for(;e;){if(1===e.nodeType)return e;e=e.previousSiblin
 g}}function sn(e,t,n,r){n<0&&(n=0);var o=t[n-1],i=t[n];return t.splice(n,0,e),
-r&&(o&&(o.nextSibling=e),e.previousSibling=o,e.nextSibling=i,i&&(i.previousSibling=e)),n}function un(e,t,n,r){var o=t.indexOf(e);if(o<0)return-1;if(r){var i=t[o-1],a=t[o+1];i&&(i.nextSibling=a),a&&(a.previousSibling=i)}t.splice(o,1);var s=n;o<=n&&(s=n-1);var u=t[s-1],c=t[s];return t.splice(s,0,e),r&&(u&&(u.nextSibling=e),e.previousSibling=u,e.nextSibling=c,c&&(c.previousSibling=e)),o===s?-1:n}function cn(e,t,n){var r=t.indexOf(e);if(!(r<0)){if(n){var o=t[r-1],i=t[r+1];o&&(o.nextSibling=i),i&&(i.previousSibling=o)}t.splice(r,1)}}function ln(){this.nodeId=Yt(),this.ref=this.nodeId,this.children=[],this.pureChildren=[],this.parentNode=null,this.nextSibling=null,this.previousSibling=null}function fn(e,t){if(t&&t.length){var n=function(t){Vu.call(this,e,t,!0)};n.prototype=Object.create(Vu.prototype),Object.defineProperty(n.prototype,"constructor",{configurable:!1,enumerable:!1,writable:!1,value:Vu}),t.forEach(function(t){n.prototype[t]=function(){for(var n=[],r=arguments.length;r--;)n[r]
 =arguments[r];var o=Qt(this.docId);if(o)return o.send("component",{ref:this.ref,component:e,method:t},n)}}),qu[e]=n}}function dn(e,t,n){void 0===e&&(e=Wu);var r=qu[e];if(r&&!n)return new r(t);t=t||{},this.nodeType=1,this.nodeId=Yt(),this.ref=this.nodeId,this.type=e,this.attr=t.attr||{},this.style=t.style||{},this.classStyle=t.classStyle||{},this.event={},this.children=[],this.pureChildren=[]}function pn(e,t){Kt(e).nodeMap[t.nodeId]=t}function hn(){var e={createFinish:global.callCreateFinish,updateFinish:global.callUpdateFinish,refreshFinish:global.callRefreshFinish,createBody:global.callCreateBody,addElement:global.callAddElement,removeElement:global.callRemoveElement,moveElement:global.callMoveElement,updateAttrs:global.callUpdateAttrs,updateStyle:global.callUpdateStyle,addEvent:global.callAddEvent,removeEvent:global.callRemoveEvent},t=Hu.prototype;for(var n in e)!function(n){var r=e[n];t[n]=r?function(e,t){return r.apply(void 0,[e].concat(t))}:function(e,t){return Ju(e,[{module:"d
 om",method:n,args:t}],"-1")}}(n);t.componentHandler=global.callNativeComponent||function(e,t,n,r,o){return Ju(e,[{component:o.component,ref:t,method:n,args:r}])},t.moduleHandler=global.callNativeModule||function(e,t,n,r){return Ju(e,[{module:t,method:n,args:r}])}}function vn(e,t){yn(e)?console.warn('Service "'+e+'" has been registered already!'):(t=Object.assign({},t),Ku.push({name:e,options:t}))}function mn(e){Ku.some(function(t,n){if(t.name===e)return Ku.splice(n,1),!0})}function yn(e){return _n(e)>=0}function _n(e){return Ku.map(function(e){return e.name}).indexOf(e)}function gn(e){var t,n=Zu.exec(e);if(n)try{t=JSON.parse(n[1])}catch(e){}return t}function bn(e,t,n){var r=Object.create(null);return r.service=Object.create(null),Ku.forEach(function(o){var i=(o.name,o.options),a=i.create;if(a){var s=a(e,t,n);Object.assign(r.service,s),Object.assign(r,s.instance)}}),delete r.service.instance,Object.freeze(r.service),r}function wn(e,t,n,r){var o=Qu[e];if(!o){o=gn(t)||{},Gu[o.framework
 ]||(o.framework="Weex"),n=JSON.parse(JSON.stringify(n||{})),n.bundleVersion=o.version,n.env=JSON.parse(JSON.stringify(global.WXEnvironment||{})),console.debug("[JS Framework] create an "+o.framework+"@"+n.bundleVersion+" instance from "+n.bundleVersion);var i={info:o,config:n,created:Date.now(),framework:o.framework};return i.services=bn(e,i,Xu),Qu[e]=i,Gu[o.framework].createInstance(e,t,n,r,i)}return new Error('invalid instance id "'+e+'"')}function On(e){Yu[e]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];"registerComponents"===e&&En(t[0]);for(var r in Gu){var o=Gu[r];o&&o[e]&&o[e].apply(o,t)}}}function En(e){Array.isArray(e)&&e.forEach(function(e){e&&e.type&&e.methods&&fn(e.type,e.methods)})}function xn(e){Yu[e]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=t[0],o=Qu[r];if(o&&Gu[o.framework]){var i=(a=Gu[o.framework])[e].apply(a,t);return"refreshInstance"===e?Ku.forEach(function(e){var t=e.options.refresh;t&&t(r,{info:o,runtime:Xu})})
 :"destroyInstance"===e&&(Ku.forEach(function(e){var t=e.options.destroy;t&&t(r,{info:o,runtime:Xu})}),delete Qu[r]),i}return new Error('invalid instance id "'+r+'"');var a}}function Sn(e,t){Yu[t]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=t[0],o=Qu[r];return o&&Gu[o.framework]?(i=Gu[o.framework])[e].apply(i,t):new Error('invalid instance id "'+r+'"');var i}}function Cn(e){Xu=e||{},Gu=Xu.frameworks||{},hn();for(var t in Gu){Gu[t].init(e)}return["registerComponents","registerModules","registerMethods"].forEach(On),["destroyInstance","refreshInstance","receiveTasks","getRoot"].forEach(xn),Sn("receiveTasks","callJS"),Yu}function kn(e){this.nodeType=8,this.nodeId=Yt(),this.ref=this.nodeId,this.type="comment",this.value=e,this.children=[],this.pureChildren=[]}function jn(e,t){this.id=e,this.batched=!1,this.updates=[],"function"==typeof t?Object.defineProperty(this,"handler",{configurable:!0,enumerable:!0,writable:!0,value:t}):console.error("[JS Runtime] invali
 d parameter, handler must be a function")}function An(e,t){return void 0===t&&(t=[]),{module:"dom",method:e,args:t}}function In(e,t){var n=t||global.callNative;return"function"!=typeof n&&console.error("[JS Runtime] no default handler"),function(t){Array.isArray(t)||(t=[t]);for(var r=0;r<t.length;r++){var o=Nn(e,t[r],n);if(-1===o)return o}}}function Tn(e,t){return"dom"===e&&ec[t]&&"function"==typeof global[ec[t]]}function Nn(e,t,n){var r=t.module,o=t.method,i=t.args;return Tn(r,o)?global[ec[o]].apply(global,[e].concat(i,["-1"])):n(e,[t],"-1")}function Pn(e,t,n){e=e?e.toString():"",this.id=e,this.URL=t,Xt(e,this),this.nodeMap={};var r=Pn.Listener||jn;this.listener=new r(e,n||In(e,Pn.handler)),this.taskCenter=new Hu(e,n?function(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return n.apply(void 0,t)}:Pn.handler),this.createDocumentElement()}function Mn(e,t){var n=t.attrs||{};for(var r in n)e.setAttr(r,n[r],!0);var o=t.style||{};for(var i in o)e.setStyle(i,o[i],!0)}fu
 nction $n(){zt(),Object.freeze(tc.Element),Object.freeze(tc.Comment),Object.freeze(tc.Listener),Object.freeze(tc.Document.prototype),Object.freeze(tc.Element.prototype),Object.freeze(tc.Comment.prototype),Object.freeze(tc.Listener.prototype)}function Rn(e,t){void 0===t&&(t={}),this.type=e||"message",this.data=t.data||null,this.origin=t.origin||"",this.source=t.source||null,this.ports=t.ports||[],this.target=null,this.timeStamp=Date.now()}function Dn(){}function Fn(e,t,n,r){console.warn("[Upgrade Warning] $userTrack will be removed in the next version!"),console.warn("[JS Framework] Vm#$userTrack is deprecated, please use \"require('@weex-module/userTrack').commit(type, name, comName, param)\" instead"),this._app.requireModule("userTrack").commit(e,t,n,r)}function Ln(e,t){if(console.warn("[Upgrade Warning] $sendMtop will be removed in the next version!"),console.warn("[JS Framework] Vm#$sendMtop is deprecated, please use \"require('@weex-module/stream').sendMtop(params, callback)\" i
 nstead"),"undefined"==typeof window){this._app.requireModule("windvane").call({class:"MtopWVPlugin",method:"send",data:e},t)}else{this._app.requireModule("stream").sendMtop(e,t)}}function Un(e,t){console.warn("[Upgrade Warning] $callWindvane will be removed in the next version!"),console.warn("[JS Framework] Vm#$callWindvane is deprecated, please use \"require('@weex-module/windvane').call(params, callback)\" instead"),this._app.requireModule("windvane").call(e,t)}function Bn(e,t){console.warn("[Upgrade Warning] $setSpm will be removed in the next version!"),console.warn("[JS Framework] Vm#$setSpm is deprecated, please use \"require('@weex-module/pageInfo').setSpm(a, b)\" instead"),this._app.requireModule("pageInfo").setSpm(e,t)}function Vn(e){console.warn("[Upgrade Warning] $getUserInfo will be removed in the next version!"),console.warn("[JS Framework] Vm#$getUserInfo is deprecated, please use \"require('@weex-module/user').getUserInfo(callback)\" instead"),this._app.requireModule
 ("user").getUserInfo(e)}function qn(e){console.warn("[Upgrade Warning] $login will be removed in the next version!"),console.warn("[JS Framework] Vm#$login is deprecated, please use \"require('@weex-module/user').login(callback)\" instead"),this._app.requireModule("user").login(e)}function Wn(e){console.warn("[Upgrade Warning] $logout will be removed in the next version!"),console.warn("[JS Framework] Vm#$logout is deprecated, please use \"require('@weex-module/user').logout(callback)\" instead"),this._app.requireModule("user").logout(e)}var zn,Jn={},Hn={},Gn=e,Xn=t,Kn=n,Zn=r,Qn=o,Yn=i,er=a,tr=s,nr=u,rr=c,or={init:Gn,registerComponents:Xn,registerModules:Kn,registerMethods:Zn,prepareInstance:Qn,createInstance:Yn,refreshInstance:er,destroyInstance:tr,getRoot:nr,receiveTasks:rr},ir=Object.freeze({default:or,__moduleExports:or,init:Gn,registerComponents:Xn,registerModules:Kn,registerMethods:Zn,prepareInstance:Qn,createInstance:Yn,refreshInstance:er,destroyInstance:tr,getRoot:nr,receive
 Tasks:rr}),ar="undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:{},sr=function(e,t){function n(e){return void 0===e||null===e}function r(e){return void 0!==e&&null!==e}function o(e){return!0===e}function i(e){return!1===e}function a(e){return"string"==typeof e||"number"==typeof e}function s(e){return null!==e&&"object"==typeof e}function u(e){return"[object Object]"===mn.call(e)}function c(e){return"[object RegExp]"===mn.call(e)}function l(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function f(e){var t=parseFloat(e);return isNaN(t)?e:t}function d(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o<r.length;o++)n[r[o]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}function p(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}function h(e,t){return yn.call(e,t)}function v(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}function m(e,t){function
  n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function y(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function _(e,t){for(var n in t)e[n]=t[n];return e}function g(e){for(var t={},n=0;n<e.length;n++)e[n]&&_(t,e[n]);return t}function b(){}function w(e,t){var n=s(e),r=s(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{return JSON.stringify(e)===JSON.stringify(t)}catch(n){return e===t}}function O(e,t){for(var n=0;n<e.length;n++)if(w(e[n],t))return n;return-1}function E(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}function x(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function S(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function C(e){if(!In.test(e)){var t=e.split(".");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}function k(e,t,n){if(jn.errorHandler)jn.errorHandler.call(null,e,t,n)
 ;else{if(!Pn||"undefined"==typeof console)throw e;console.error(e)}}function j(e){return"function"==typeof e&&/native code/.test(e.toString())}function A(e){Jn.target&&Hn.push(Jn.target),Jn.target=e}function I(){Jn.target=Hn.pop()}function T(e,t){e.__proto__=t}function N(e,t,n){for(var r=0,o=n.length;r<o;r++){var i=n[r];S(e,i,t[i])}}function P(e,t){if(s(e)){var n;return h(e,"__ob__")&&e.__ob__ instanceof Qn?n=e.__ob__:Zn.shouldConvert&&!Bn()&&(Array.isArray(e)||u(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Qn(e)),t&&n&&n.vmCount++,n}}function M(e,t,n,r){var o=new Jn,i=Object.getOwnPropertyDescriptor(e,t);if(!i||!1!==i.configurable){var a=i&&i.get,s=i&&i.set,u=P(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=a?a.call(e):n;return Jn.target&&(o.depend(),u&&u.dep.depend(),Array.isArray(t)&&D(t)),t},set:function(t){var r=a?a.call(e):n;t===r||t!==t&&r!==r||(s?s.call(e,t):n=t,u=P(t),o.notify())}})}}function $(e,t,n){if(Array.isArray(e)&&"number"==typeof
  t)return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(h(e,t))return e[t]=n,n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(M(r.value,t,n),r.dep.notify(),n):(e[t]=n,n)}function R(e,t){if(Array.isArray(e)&&"number"==typeof t)return void e.splice(t,1);var n=e.__ob__;e._isVue||n&&n.vmCount||h(e,t)&&(delete e[t],n&&n.dep.notify())}function D(e){for(var t=void 0,n=0,r=e.length;n<r;n++)t=e[n],t&&t.__ob__&&t.__ob__.dep.depend(),Array.isArray(t)&&D(t)}function F(e,t){if(!t)return e;for(var n,r,o,i=Object.keys(t),a=0;a<i.length;a++)n=i[a],r=e[n],o=t[n],h(e,n)?u(r)&&u(o)&&F(r,o):$(e,n,o);return e}function L(e,t){return t?e?e.concat(t):Array.isArray(t)?t:[t]:e}function U(e,t){var n=Object.create(e||null);return t?_(n,t):n}function B(e){var t=e.props;if(t){var n,r,o,i={};if(Array.isArray(t))for(n=t.length;n--;)"string"==typeof(r=t[n])&&(o=gn(r),i[o]={type:null});else if(u(t))for(var a in t)r=t[a],o=gn(a),i[o]=u(r)?r:{type:r};e.props=i}}function V(e){var t=e.directives;if(t)for(var n i
 n t){var r=t[n];"function"==typeof r&&(t[n]={bind:r,update:r})}}function q(e,t,n){function r(r){var o=Yn[r]||er;u[r]=o(e[r],t[r],n,r)}"function"==typeof t&&(t=t.options),B(t),V(t);var o=t.extends;if(o&&(e=q(e,o,n)),t.mixins)for(var i=0,a=t.mixins.length;i<a;i++)e=q(e,t.mixins[i],n);var s,u={};for(s in e)r(s);for(s in t)h(e,s)||r(s);return u}function W(e,t,n,r){if("string"==typeof n){var o=e[t];if(h(o,n))return o[n];var i=gn(n);if(h(o,i))return o[i];var a=bn(i);if(h(o,a))return o[a];var s=o[n]||o[i]||o[a];return s}}function z(e,t,n,r){var o=t[e],i=!h(n,e),a=n[e];if(G(Boolean,o.type)&&(i&&!h(o,"default")?a=!1:G(String,o.type)||""!==a&&a!==On(e)||(a=!0)),void 0===a){a=J(r,o,e);var s=Zn.shouldConvert;Zn.shouldConvert=!0,P(a),Zn.shouldConvert=s}return a}function J(e,t,n){if(h(t,"default")){var r=t.default;return e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n]?e._props[n]:"function"==typeof r&&"Function"!==H(t.type)?r.call(e):r}}function H(e){var t=e&&e.toS
 tring().match(/^\s*function (\w+)/);return t?t[1]:""}function G(e,t){if(!Array.isArray(t))return H(t)===H(e);for(var n=0,r=t.length;n<r;n++)if(H(t[n])===H(e))return!0;return!1}function X(e){return new tr(void 0,void 0,void 0,String(e))}function K(e){var t=new tr(e.tag,e.data,e.children,e.text,e.elm,e.context,e.componentOptions);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.isCloned=!0,t}function Z(e){for(var t=e.length,n=new Array(t),r=0;r<t;r++)n[r]=K(e[r]);return n}function Q(e){function t(){var e=arguments,n=t.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=0;r<n.length;r++)n[r].apply(null,e)}return t.fns=e,t}function Y(e,t,r,o,i){var a,s,u,c;for(a in e)s=e[a],u=t[a],c=ir(a),n(s)||(n(u)?(n(s.fns)&&(s=e[a]=Q(s)),r(c.name,s,c.once,c.capture,c.passive)):s!==u&&(u.fns=s,e[a]=u));for(a in t)n(e[a])&&(c=ir(a),o(c.name,t[a],c.capture))}function ee(e,t,i){function a(){i.apply(this,arguments),p(s.fns,a)}var s,u=e[t];n(u)?s=Q([a]):r(u.fns)&&
 o(u.merged)?(s=u,s.fns.push(a)):s=Q([u,a]),s.merged=!0,e[t]=s}function te(e,t,o){var i=t.options.props;if(!n(i)){var a={},s=e.attrs,u=e.props;if(r(s)||r(u))for(var c in i){var l=On(c);ne(a,u,c,l,!0)||ne(a,s,c,l,!1)}return a}}function ne(e,t,n,o,i){if(r(t)){if(h(t,n))return e[n]=t[n],i||delete t[n],!0;if(h(t,o))return e[n]=t[o],i||delete t[o],!0}return!1}function re(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}function oe(e){return a(e)?[X(e)]:Array.isArray(e)?ae(e):void 0}function ie(e){return r(e)&&r(e.text)&&i(e.isComment)}function ae(e,t){var i,s,u,c=[];for(i=0;i<e.length;i++)s=e[i],n(s)||"boolean"==typeof s||(u=c[c.length-1],Array.isArray(s)?c.push.apply(c,ae(s,(t||"")+"_"+i)):a(s)?ie(u)?u.text+=String(s):""!==s&&c.push(X(s)):ie(s)&&ie(u)?c[c.length-1]=X(u.text+s.text):(o(e._isVList)&&r(s.tag)&&n(s.key)&&r(t)&&(s.key="__vlist"+t+"_"+i+"__"),c.push(s)));return c}function se(e,t){return s(e)?t.extend(e):e}function ue(e,t,i
 ){if(o(e.error)&&r(e.errorComp))return e.errorComp;if(r(e.resolved))return e.resolved;if(o(e.loading)&&r(e.loadingComp))return e.loadingComp;if(!r(e.contexts)){var a=e.contexts=[i],u=!0,c=function(){for(var e=0,t=a.length;e<t;e++)a[e].$forceUpdate()},l=E(function(n){e.resolved=se(n,t),u||c()}),f=E(function(t){r(e.errorComp)&&(e.error=!0,c())}),d=e(l,f);return s(d)&&("function"==typeof d.then?n(e.resolved)&&d.then(l,f):r(d.component)&&"function"==typeof d.component.then&&(d.component.then(l,f),r(d.error)&&(e.errorComp=se(d.error,t)),r(d.loading)&&(e.loadingComp=se(d.loading,t),0===d.delay?e.loading=!0:setTimeout(function(){n(e.resolved)&&n(e.error)&&(e.loading=!0,c())},d.delay||200)),r(d.timeout)&&setTimeout(function(){n(e.resolved)&&f(null)},d.timeout))),u=!1,e.loading?e.loadingComp:e.resolved}e.contexts.push(i)}function ce(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(r(n)&&r(n.componentOptions))return n}}function le(e){e._events=Object.create(null),e._hasHookEve
 nt=!1;var t=e.$options._parentListeners;t&&pe(e,t)}function fe(e,t,n){n?rr.$once(e,t):rr.$on(e,t)}function de(e,t){rr.$off(e,t)}function pe(e,t,n){rr=e,Y(t,n||{},fe,de,e)}function he(e,t){var n={};if(!e)return n;for(var r=[],o=0,i=e.length;o<i;o++){var a=e[o];if(a.context!==t&&a.functionalContext!==t||!a.data||null==a.data.slot)r.push(a);else{var s=a.data.slot,u=n[s]||(n[s]=[]);"template"===a.tag?u.push.apply(u,a.children):u.push(a)}}return r.every(ve)||(n.default=r),n}function ve(e){return e.isComment||" "===e.text}function me(e,t){t=t||{};for(var n=0;n<e.length;n++)Array.isArray(e[n])?me(e[n],t):t[e[n].key]=e[n].fn;return t}function ye(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}function _e(e,t,n){e.$el=t,e.$options.render||(e.$options.rende
 r=or),Ee(e,"beforeMount");var r;return r=function(){e._update(e._render(),n)},e._watcher=new vr(e,r,b),n=!1,null==e.$vnode&&(e._isMounted=!0,Ee(e,"mounted")),e}function ge(e,t,n,r,o){var i=!!(o||e.$options._renderChildren||r.data.scopedSlots||e.$scopedSlots!==An);if(e.$options._parentVnode=r,e.$vnode=r,e._vnode&&(e._vnode.parent=r),e.$options._renderChildren=o,t&&e.$options.props){Zn.shouldConvert=!1;for(var a=e._props,s=e.$options._propKeys||[],u=0;u<s.length;u++){var c=s[u];a[c]=z(c,e.$options.props,t,e)}Zn.shouldConvert=!0,e.$options.propsData=t}if(n){var l=e.$options._parentListeners;e.$options._parentListeners=n,pe(e,n,l)}i&&(e.$slots=he(o,r.context),e.$forceUpdate())}function be(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function we(e,t){if(t){if(e._directInactive=!1,be(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)we(e.$children[n]);Ee(e,"activated")}}function Oe(e,t){if(!(t&&
 (e._directInactive=!0,be(e))||e._inactive)){e._inactive=!0;for(var n=0;n<e.$children.length;n++)Oe(e.$children[n]);Ee(e,"deactivated")}}function Ee(e,t){var n=e.$options[t];if(n)for(var r=0,o=n.length;r<o;r++)try{n[r].call(e)}catch(n){k(n,e,t+" hook")}e._hasHookEvent&&e.$emit("hook:"+t)}function xe(){pr=ur.length=cr.length=0,lr={},fr=dr=!1}function Se(){dr=!0;var e,t;for(ur.sort(function(e,t){return e.id-t.id}),pr=0;pr<ur.length;pr++)e=ur[pr],t=e.id,lr[t]=null,e.run();var n=cr.slice(),r=ur.slice();xe(),je(n),Ce(r),Vn&&jn.devtools&&Vn.emit("flush")}function Ce(e){for(var t=e.length;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&Ee(r,"updated")}}function ke(e){e._inactive=!1,cr.push(e)}function je(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,we(e[t],!0)}function Ae(e){var t=e.id;if(null==lr[t]){if(lr[t]=!0,dr){for(var n=ur.length-1;n>pr&&ur[n].id>e.id;)n--;ur.splice(n+1,0,e)}else ur.push(e);fr||(fr=!0,Wn(Se))}}function Ie(e){mr.clear(),Te(e,mr)}function Te(e,t){var n,r,o=Arr
 ay.isArray(e);if((o||s(e))&&Object.isExtensible(e)){if(e.__ob__){var i=e.__ob__.dep.id;if(t.has(i))return;t.add(i)}if(o)for(n=e.length;n--;)Te(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)Te(e[r[n]],t)}}function Ne(e,t,n){yr.get=function(){return this[t][n]},yr.set=function(e){this[t][n]=e},Object.defineProperty(e,n,yr)}function Pe(e){e._watchers=[];var t=e.$options;t.props&&Me(e,t.props),t.methods&&Ue(e,t.methods),t.data?$e(e):P(e._data={},!0),t.computed&&De(e,t.computed),t.watch&&Be(e,t.watch)}function Me(e,t){var n=e.$options.propsData||{},r=e._props={},o=e.$options._propKeys=[],i=!e.$parent;Zn.shouldConvert=i;for(var a in t)!function(i){o.push(i);var a=z(i,t,n,e);M(r,i,a),i in e||Ne(e,"_props",i)}(a);Zn.shouldConvert=!0}function $e(e){var t=e.$options.data;t=e._data="function"==typeof t?Re(t,e):t||{},u(t)||(t={});for(var n=Object.keys(t),r=e.$options.props,o=n.length;o--;)r&&h(r,n[o])||x(n[o])||Ne(e,"_data",n[o]);P(t,!0)}function Re(e,t){try{return e.call(t)}catch(e){return
  k(e,t,"data()"),{}}}function De(e,t){var n=e._computedWatchers=Object.create(null);for(var r in t){var o=t[r],i="function"==typeof o?o:o.get;n[r]=new vr(e,i,b,_r),r in e||Fe(e,r,o)}}function Fe(e,t,n){"function"==typeof n?(yr.get=Le(t),yr.set=b):(yr.get=n.get?!1!==n.cache?Le(t):n.get:b,yr.set=n.set?n.set:b),Object.defineProperty(e,t,yr)}function Le(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),Jn.target&&t.depend(),t.value}}function Ue(e,t){e.$options.props;for(var n in t)e[n]=null==t[n]?b:m(t[n],e)}function Be(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var o=0;o<r.length;o++)Ve(e,n,r[o]);else Ve(e,n,r)}}function Ve(e,t,n){var r;u(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}function qe(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}function We(e){var t=ze(e.$options.inject,e);t&&Object.keys(t).forEach(function(n){M(e,n,t[n])})}function ze(e,t){if(e){fo
 r(var n=Array.isArray(e),r=Object.create(null),o=n?e:qn?Reflect.ownKeys(e):Object.keys(e),i=0;i<o.length;i++)for(var a=o[i],s=n?a:e[a],u=t;u;){if(u._provided&&s in u._provided){r[a]=u._provided[s];break}u=u.$parent}return r}}function Je(e,t,n,o,i){var a={},s=e.options.props;if(r(s))for(var u in s)a[u]=z(u,s,t||{});else r(n.attrs)&&He(a,n.attrs),r(n.props)&&He(a,n.props);var c=Object.create(o),l=function(e,t,n,r){return Ye(c,e,t,n,r,!0)},f=e.options.render.call(null,l,{data:n,props:a,children:i,parent:o,listeners:n.on||{},injections:ze(e.options.inject,o),slots:function(){return he(i,o)}});return f instanceof tr&&(f.functionalContext=o,f.functionalOptions=e.options,n.slot&&((f.data||(f.data={})).slot=n.slot)),f}function He(e,t){for(var n in t)e[gn(n)]=t[n]}function Ge(e,t,i,a,u){if(!n(e)){var c=i.$options._base;if(s(e)&&(e=c.extend(e)),"function"==typeof e&&(!n(e.cid)||void 0!==(e=ue(e,c,i)))){pt(e),t=t||{},r(t.model)&&Qe(e.options,t);var l=te(t,e,u);if(o(e.options.functional))return
  Je(e,l,t,i,a);var f=t.on;t.on=t.nativeOn,o(e.options.abstract)&&(t={}),Ke(t);var d=e.options.name||u;return new tr("vue-component-"+e.cid+(d?"-"+d:""),t,void 0,void 0,void 0,i,{Ctor:e,propsData:l,listeners:f,tag:u,children:a})}}}function Xe(e,t,n,o){var i=e.componentOptions,a={_isComponent:!0,parent:t,propsData:i.propsData,_componentTag:i.tag,_parentVnode:e,_parentListeners:i.listeners,_renderChildren:i.children,_parentElm:n||null,_refElm:o||null},s=e.data.inlineTemplate;return r(s)&&(a.render=s.render,a.staticRenderFns=s.staticRenderFns),new i.Ctor(a)}function Ke(e){e.hook||(e.hook={});for(var t=0;t<br.length;t++){var n=br[t],r=e.hook[n],o=gr[n];e.hook[n]=r?Ze(o,r):o}}function Ze(e,t){return function(n,r,o,i){e(n,r,o,i),t(n,r,o,i)}}function Qe(e,t){var n=e.model&&e.model.prop||"value",o=e.model&&e.model.event||"input";(t.props||(t.props={}))[n]=t.model.value;var i=t.on||(t.on={});r(i[o])?i[o]=[t.model.callback].concat(i[o]):i[o]=t.model.callback}function Ye(e,t,n,r,i,s){return(Arr
 ay.isArray(n)||a(n))&&(i=r,r=n,n=void 0),o(s)&&(i=Or),et(e,t,n,r,i)}function et(e,t,n,o,i){if(r(n)&&r(n.__ob__))return or();if(!t)return or();Array.isArray(o)&&"function"==typeof o[0]&&(n=n||{},n.scopedSlots={default:o[0]},o.length=0),i===Or?o=oe(o):i===wr&&(o=re(o));var a,s;if("string"==typeof t){var u;s=jn.getTagNamespace(t),a=jn.isReservedTag(t)?new tr(jn.parsePlatformTagName(t),n,o,void 0,void 0,e):r(u=W(e.$options,"components",t))?Ge(u,n,e,o,t):new tr(t,n,o,void 0,void 0,e)}else a=Ge(t,n,e,o);return r(a)?(s&&tt(a,s),a):or()}function tt(e,t){if(e.ns=t,"foreignObject"!==e.tag&&r(e.children))for(var o=0,i=e.children.length;o<i;o++){var a=e.children[o];r(a.tag)&&n(a.ns)&&tt(a,t)}}function nt(e,t){var n,o,i,a,u;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),o=0,i=e.length;o<i;o++)n[o]=t(e[o],o);else if("number"==typeof e)for(n=new Array(e),o=0;o<e;o++)n[o]=t(o+1,o);else if(s(e))for(a=Object.keys(e),n=new Array(a.length),o=0,i=a.length;o<i;o++)u=a[o],n[o]=t(e[u],u,
 o);return r(n)&&(n._isVList=!0),n}function rt(e,t,n,r){var o=this.$scopedSlots[e];if(o)return n=n||{},r&&_(n,r),o(n)||t;var i=this.$slots[e];return i||t}function ot(e){return W(this.$options,"filters",e,!0)||xn}function it(e,t,n){var r=jn.keyCodes[t]||n;return Array.isArray(r)?-1===r.indexOf(e):r!==e}function at(e,t,n,r){if(n)if(s(n)){Array.isArray(n)&&(n=g(n));var o;for(var i in n){if("class"===i||"style"===i)o=e;else{var a=e.attrs&&e.attrs.type;o=r||jn.mustUseProp(t,a,i)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}i in o||(o[i]=n[i])}}else;return e}function st(e,t){var n=this._staticTrees[e];return n&&!t?Array.isArray(n)?Z(n):K(n):(n=this._staticTrees[e]=this.$options.staticRenderFns[e].call(this._renderProxy),ct(n,"__static__"+e,!1),n)}function ut(e,t,n){return ct(e,"__once__"+t+(n?"_"+n:""),!0),e}function ct(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&"string"!=typeof e[r]&&lt(e[r],t+"_"+r,n);else lt(e,t,n)}function lt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=
 n}function ft(e){e._vnode=null,e._staticTrees=null;var t=e.$vnode=e.$options._parentVnode,n=t&&t.context;e.$slots=he(e.$options._renderChildren,n),e.$scopedSlots=An,e._c=function(t,n,r,o){return Ye(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return Ye(e,t,n,r,o,!0)}}function dt(e,t){var n=e.$options=Object.create(e.constructor.options);n.parent=t.parent,n.propsData=t.propsData,n._parentVnode=t._parentVnode,n._parentListeners=t._parentListeners,n._renderChildren=t._renderChildren,n._componentTag=t._componentTag,n._parentElm=t._parentElm,n._refElm=t._refElm,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}function pt(e){var t=e.options;if(e.super){var n=pt(e.super);if(n!==e.superOptions){e.superOptions=n;var r=ht(e);r&&_(e.extendOptions,r),t=e.options=q(n,e.extendOptions),t.name&&(t.components[t.name]=e)}}return t}function ht(e){var t,n=e.options,r=e.extendOptions,o=e.sealedOptions;for(var i in n)n[i]!==o[i]&&(t||(t={}),t[i]=vt(n[i],r[i],o[i]));return t}function
  vt(e,t,n){if(Array.isArray(e)){var r=[];n=Array.isArray(n)?n:[n],t=Array.isArray(t)?t:[t];for(var o=0;o<e.length;o++)(t.indexOf(e[o])>=0||n.indexOf(e[o])<0)&&r.push(e[o]);return r}return e}function mt(e){this._init(e)}function yt(e){e.use=function(e){if(e.installed)return this;var t=y(arguments,1);return t.unshift(this),"function"==typeof e.install?e.install.apply(e,t):"function"==typeof e&&e.apply(null,t),e.installed=!0,this}}function _t(e){e.mixin=function(e){return this.options=q(this.options,e),this}}function gt(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,o=e._Ctor||(e._Ctor={});if(o[r])return o[r];var i=e.name||n.options.name,a=function(e){this._init(e)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=t++,a.options=q(n.options,e),a.super=n,a.options.props&&bt(a),a.options.computed&&wt(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,Cn.forEach(function(e){a[e]=n[e]}),i&&(a.options.components[i]=a),a.superOptions=n.options,a.
 extendOptions=e,a.sealedOptions=_({},a.options),o[r]=a,a}}function bt(e){var t=e.options.props;for(var n in t)Ne(e.prototype,"_props",n)}function wt(e){var t=e.options.computed;for(var n in t)Fe(e.prototype,n,t[n])}function Ot(e){Cn.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}function Et(e){return e&&(e.Ctor.options.name||e.tag)}function xt(e,t){return"string"==typeof e?e.split(",").indexOf(t)>-1:!!c(e)&&e.test(t)}function St(e,t,n){for(var r in e){var o=e[r];if(o){var i=Et(o.componentOptions);i&&!n(i)&&(o!==t&&Ct(o),e[r]=null)}}}function Ct(e){e&&e.componentInstance.$destroy()}function kt(e){return new t.Element(e)}function jt(e,n){return new t.Element(e+":"+n)}function At(e){return new t.TextNode(e)}function It(e){return new t.Comment(e)}function Tt(e,t,n){if(3!==t.nodeType)e.insertBefore(t,
 n);else if("text"===e.type)e.setAttr("value",t.text),t.parentNode=e;else{var r=kt("text");r.setAttr("value",t.text),e.insertBefore(r,n)}}function Nt(e,t){if(3===t.nodeType)return void e.setAttr("value","");e.removeChild(t)}function Pt(e,t){if(3!==t.nodeType)e.appendChild(t);else if("text"===e.type)e.setAttr("value",t.text),t.parentNode=e;else{var n=kt("text");n.setAttr("value",t.text),e.appendChild(n)}}function Mt(e){return e.parentNode}function $t(e){return e.nextSibling}function Rt(e){return e.type}function Dt(e,t){e.parentNode.setAttr("value",t)}function Ft(e,t,n){e.setAttr(t,n)}function Lt(e,t){var n=e.data.ref;if(n){var r=e.context,o=e.componentInstance||e.elm,i=r.$refs;t?Array.isArray(i[n])?p(i[n],o):i[n]===o&&(i[n]=void 0):e.data.refInFor?Array.isArray(i[n])&&i[n].indexOf(o)<0?i[n].push(o):i[n]=[o]:i[n]=o}}function Ut(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&r(e.data)===r(t.data)&&Bt(e,t)}function Bt(e,t){if("input"!==e.tag)return!0;var n;return(r(
 n=e.data)&&r(n=n.attrs)&&n.type)===(r(n=t.data)&&r(n=n.attrs)&&n.type)}function Vt(e,t,n){var o,i,a={};for(o=t;o<=n;++o)i=e[o].key,r(i)&&(a[i]=o);return a}function qt(e,t){(e.data.directives||t.data.directives)&&Wt(e,t)}function Wt(e,t){var n,r,o,i=e===Tr,a=t===Tr,s=zt(e.data.directives,e.context),u=zt(t.data.directives,t.context),c=[],l=[];for(n in u)r=s[n],o=u[n],r?(o.oldValue=r.value,Ht(o,"update",t,e),o.def&&o.def.componentUpdated&&l.push(o)):(Ht(o,"bind",t,e),o.def&&o.def.inserted&&c.push(o));if(c.length){var f=function(){for(var n=0;n<c.length;n++)Ht(c[n],"inserted",t,e)};i?ee(t.data.hook||(t.data.hook={}),"insert",f):f()}if(l.length&&ee(t.data.hook||(t.data.hook={}),"postpatch",function(){for(var n=0;n<l.length;n++)Ht(l[n],"componentUpdated",t,e)}),!i)for(n in s)u[n]||Ht(s[n],"unbind",e,e,a)}function zt(e,t){var n=Object.create(null);if(!e)return n;var r,o;for(r=0;r<e.length;r++)o=e[r],o.modifiers||(o.modifiers=Mr),n[Jt(o)]=o,o.def=W(t.$options,"directives",o.name,!0);return 
 n}function Jt(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{}).join(".")}function Ht(e,t,n,r,o){var i=e.def&&e.def[t];if(i)try{i(n.elm,e,n,r,o)}catch(r){k(r,n.context,"directive "+e.name+" "+t+" hook")}}function Gt(e,t){if(e.data.attrs||t.data.attrs){var n,r,o=t.elm,i=e.data.attrs||{},a=t.data.attrs||{};a.__ob__&&(a=t.data.attrs=_({},a));for(n in a)r=a[n],i[n]!==r&&o.setAttr(n,r);for(n in i)null==a[n]&&o.setAttr(n)}}function Xt(e,t){var n=t.elm,r=t.context,o=t.data,i=e.data;if(o.staticClass||o.class||i&&(i.staticClass||i.class)){var a=[],s=i.staticClass;s&&a.push.apply(a,s),i.class&&a.push.apply(a,i.class);var u=[],c=o.staticClass;c&&u.push.apply(u,c),o.class&&u.push.apply(u,o.class);var l=Kt(a,u,r);for(var f in l)n.setStyle(f,l[f])}}function Kt(e,t,n){var r=n.$options.style||{},o={};return t.forEach(function(e){_(o,r[e])}),e.forEach(function(e){var t=r[e];for(var n in t)o.hasOwnProperty(n)||(o[n]="")}),o}function Zt(e,t,n,r){if(r)return void console.log("Weex do not sup
 port event in bubble phase.");if(n){var o=t,i=kr;t=function(t){
-null!==(1===arguments.length?o(t):o.apply(null,arguments))&&Qt(e,null,null,i)}}kr.addEvent(e,t)}function Qt(e,t,n,r){(r||kr).removeEvent(e)}function Yt(e,t){if(e.data.on||t.data.on){var n=t.data.on||{},r=e.data.on||{};kr=t.elm,Y(n,r,Zt,Qt,t.context)}}function en(e,t){if(!t.data.staticStyle)return void tn(e,t);var n=t.elm,r=t.data.staticStyle;for(var o in r)r[o]&&n.setStyle(Lr(o),r[o]);tn(e,t)}function tn(e,t){if(e.data.style||t.data.style){var n,r,o=t.elm,i=e.data.style||{},a=t.data.style||{},s=a.__ob__;Array.isArray(a)&&(a=t.data.style=nn(a)),s&&(a=t.data.style=_({},a));for(r in i)a[r]||o.setStyle(Lr(r),"");for(r in a)n=a[r],o.setStyle(Lr(r),n)}}function nn(e){for(var t={},n=0;n<e.length;n++)e[n]&&_(t,e[n]);return t}function rn(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&_(t,Br(e.name||"v")),_(t,e),t}return"string"==typeof e?Br(e):void 0}}function on(e,t){var n=t.elm;n._leaveCb&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=rn(t.data.transition);if(r&&!n._enterCb){for
 (var o=r.enterClass,i=r.enterToClass,a=r.enterActiveClass,s=r.appearClass,u=r.appearToClass,c=r.appearActiveClass,l=r.beforeEnter,f=r.enter,d=r.afterEnter,p=r.enterCancelled,h=r.beforeAppear,v=r.appear,m=r.afterAppear,y=r.appearCancelled,_=sr,g=sr.$vnode;g&&g.parent;)g=g.parent,_=g.context;var w=!_._isMounted||!t.isRootInsert;if(!w||v||""===v){var O=w?s:o,x=w?u:i,S=w?c:a,C=w?h||l:l,k=w&&"function"==typeof v?v:f,j=w?m||d:d,A=w?y||p:p,I=k&&(k._length||k.length)>1,T=t.context.$options.style||{},N=T[O],P=T["@TRANSITION"]&&T["@TRANSITION"][S]||{},M=sn(n,T,O,x,S,t.context),$=Object.keys(M).length>0,R=n._enterCb=E(function(){R.cancelled?A&&A(n):j&&j(n),n._enterCb=null});if(setTimeout(function(){var e=n.parentNode,r=e&&e._pending&&e._pending[t.key];if(r&&r.context===t.context&&r.tag===t.tag&&r.elm._leaveCb&&r.elm._leaveCb(),k&&k(n,R),$){t.context.$requireWeexModule("animation").transition(n.ref,{styles:M,duration:P.duration||0,delay:P.delay||0,timingFunction:P.timingFunction||"linear"},I?b:
 R)}else I||R()},16),C&&C(n),N)for(var D in N)n.setStyle(D,N[D]);$||I||R()}}}function an(e,t){function n(){function t(){n.transition(r.ref,{styles:m,duration:y.duration||0,delay:y.delay||0,timingFunction:y.timingFunction||"linear"},p?b:_)}var n=e.context.$requireWeexModule("animation");_.cancelled||(e.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[e.key]=e),u&&u(r),v?n.transition(r.ref,{styles:v},t):t(),c&&c(r,_),m||p||_())}var r=e.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var o=rn(e.data.transition);if(!o)return t();if(!r._leaveCb){var i=o.leaveClass,a=o.leaveToClass,s=o.leaveActiveClass,u=o.beforeLeave,c=o.leave,l=o.afterLeave,f=o.leaveCancelled,d=o.delayLeave,p=c&&(c._length||c.length)>1,h=e.context.$options.style||{},v=h[i],m=h[a]||h[s],y=h["@TRANSITION"]&&h["@TRANSITION"][s]||{},_=r._leaveCb=E(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[e.key]=null),_.cancelled?f&&f(r):(t(),l&&l(r)),r._leaveCb=null});d?d(n):n()}}function s
 n(e,t,n,r,o,i){var a={},s=t[n],u=t[r],c=t[o];if(s)for(var l in s)a[l]=e.style[l];if(c)for(var f in c)0!==f.indexOf("transition")&&(a[f]=c[f]);return u&&_(a,u),a}function un(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?un(ce(t.children)):e}function cn(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var i in o)t[gn(i)]=o[i];return t}function ln(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}function fn(e){for(;e=e.parent;)if(e.data.transition)return!0}function dn(e,t){return t.key===e.key&&t.tag===e.tag}function pn(){}function hn(){}function vn(e,n){var r=new t.Comment("root");return r.hasAttribute=r.removeAttribute=function(){},n.documentElement.appendChild(r),r}var mn=Object.prototype.toString,yn=(d("slot,component",!0),Object.prototype.hasOwnProperty),_n=/-(\w)/g,gn=v(function(e){return e.replace(_n,function(e,t){return t?t.toUpperCase():""})}),bn=v(function(e){return e.ch
 arAt(0).toUpperCase()+e.slice(1)}),wn=/([^-])([A-Z])/g,On=v(function(e){return e.replace(wn,"$1-$2").replace(wn,"$1-$2").toLowerCase()}),En=function(){return!1},xn=function(e){return e},Sn="data-server-rendered",Cn=["component","directive","filter"],kn=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],jn={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:En,isReservedAttr:En,isUnknownElement:En,getTagNamespace:b,parsePlatformTagName:xn,mustUseProp:En,_lifecycleHooks:kn},An=Object.freeze({}),In=/[^\w.$]/,Tn=b,Nn="__proto__"in{},Pn="undefined"!=typeof window,Mn=Pn&&window.navigator.userAgent.toLowerCase(),$n=(Mn&&/msie|trident/.test(Mn),Mn&&Mn.indexOf("msie 9.0"),Mn&&Mn.indexOf("edge/")>0),Rn=(Mn&&Mn.indexOf("android"),Mn&&/iphone|ipad|ipod|ios/.test(Mn)),Dn=(Mn&&/chrome\/\d+/.test(
 Mn),!1);if(Pn)try{var Fn={};Object.defineProperty(Fn,"passive",{get:function(){Dn=!0}}),window.addEventListener("test-passive",null,Fn)}catch(e){}var Ln,Un,Bn=function(){return void 0===Ln&&(Ln=!Pn&&void 0!==ar&&"server"===ar.process.env.VUE_ENV),Ln},Vn=Pn&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,qn="undefined"!=typeof Symbol&&j(Symbol)&&"undefined"!=typeof Reflect&&j(Reflect.ownKeys),Wn=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t<e.length;t++)e[t]()}var t,n=[],r=!1;if("undefined"!=typeof Promise&&j(Promise)){var o=Promise.resolve(),i=function(e){console.error(e)};t=function(){o.then(e).catch(i),Rn&&setTimeout(b)}}else if("undefined"==typeof MutationObserver||!j(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())t=function(){setTimeout(e,0)};else{var a=1,s=new MutationObserver(e),u=document.createTextNode(String(a));s.observe(u,{characterData:!0}),t=function(){a=(a+1)%2,u.data=String(a)}}return function(e,o){var i;if(n.push
 (function(){if(e)try{e.call(o)}catch(e){k(e,o,"nextTick")}else i&&i(o)}),r||(r=!0,t()),!e&&"undefined"!=typeof Promise)return new Promise(function(e,t){i=e})}}();Un="undefined"!=typeof Set&&j(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var zn=0,Jn=function(){this.id=zn++,this.subs=[]};Jn.prototype.addSub=function(e){this.subs.push(e)},Jn.prototype.removeSub=function(e){p(this.subs,e)},Jn.prototype.depend=function(){Jn.target&&Jn.target.addDep(this)},Jn.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t<n;t++)e[t].update()},Jn.target=null;var Hn=[],Gn=Array.prototype,Xn=Object.create(Gn);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(e){var t=Gn[e];S(Xn,e,function(){for(var n=arguments,r=arguments.length,o=new Array(r);r--;)o[r]=n[r];var i,a=t.apply(th
 is,o),s=this.__ob__;switch(e){case"push":case"unshift":i=o;break;case"splice":i=o.slice(2)}return i&&s.observeArray(i),s.dep.notify(),a})});var Kn=Object.getOwnPropertyNames(Xn),Zn={shouldConvert:!0,isSettingProps:!1},Qn=function(e){if(this.value=e,this.dep=new Jn,this.vmCount=0,S(e,"__ob__",this),Array.isArray(e)){(Nn?T:N)(e,Xn,Kn),this.observeArray(e)}else this.walk(e)};Qn.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)M(e,t[n],e[t[n]])},Qn.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)P(e[t])};var Yn=jn.optionMergeStrategies;Yn.data=function(e,t,n){return n?e||t?function(){var r="function"==typeof t?t.call(n):t,o="function"==typeof e?e.call(n):void 0;return r?F(r,o):o}:void 0:t?"function"!=typeof t?e:e?function(){return F(t.call(this),e.call(this))}:t:e},kn.forEach(function(e){Yn[e]=L}),Cn.forEach(function(e){Yn[e+"s"]=U}),Yn.watch=function(e,t){if(!t)return Object.create(e||null);if(!e)return t;var n={};_(n,e);for(var r in t){var o=n[r
 ],i=t[r];o&&!Array.isArray(o)&&(o=[o]),n[r]=o?o.concat(i):[i]}return n},Yn.props=Yn.methods=Yn.computed=function(e,t){if(!t)return Object.create(e||null);if(!e)return t;var n=Object.create(null);return _(n,e),_(n,t),n};var er=function(e,t){return void 0===t?e:t},tr=function(e,t,n,r,o,i,a){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.functionalContext=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1},nr={child:{}};nr.child.get=function(){return this.componentInstance},Object.defineProperties(tr.prototype,nr);var rr,or=function(){var e=new tr;return e.text="",e.isComment=!0,e},ir=v(function(e){var t="&"===e.charAt(0);e=t?e.slice(1):e;var n="~"===e.charAt(0);e=n?e.slice(1):e;var r="!"===e.charAt(0);return e=r?e.slice(1):e,{name:e,once:n,capture:r,passive:t}}),sr=null,ur=[],cr=[],lr={},fr=
 !1,dr=!1,pr=0,hr=0,vr=function(e,t,n,r){this.vm=e,e._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++hr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Un,this.newDepIds=new Un,this.expression="","function"==typeof t?this.getter=t:(this.getter=C(t),this.getter||(this.getter=function(){})),this.value=this.lazy?void 0:this.get()};vr.prototype.get=function(){A(this);var e,t=this.vm;if(this.user)try{e=this.getter.call(t,t)}catch(e){k(e,t,'getter for watcher "'+this.expression+'"')}else e=this.getter.call(t,t);return this.deep&&Ie(e),I(),this.cleanupDeps(),e},vr.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},vr.prototype.cleanupDeps=function(){for(var e=this,t=this.deps.length;t--;){var n=e.deps[t];e.newDepIds.has(n.id)||n.removeSub(e)}var r=this.
 depIds;this.depIds=this.newDepIds,this.newDepIds=r,this.newDepIds.clear(),r=this.deps,this.deps=this.newDeps,this.newDeps=r,this.newDeps.length=0},vr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Ae(this)},vr.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||s(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){k(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},vr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},vr.prototype.depend=function(){for(var e=this,t=this.deps.length;t--;)e.deps[t].depend()},vr.prototype.teardown=function(){var e=this;if(this.active){this.vm._isBeingDestroyed||p(this.vm._watchers,this);for(var t=this.deps.length;t--;)e.deps[t].removeSub(e);this.active=!1}};var mr=new Un,yr={enumerable:!0,configurable:!0,get:b,set:b},_r={lazy:!0},gr={init:function(e,t,n,r){if(!e.componentInstance||e.componentInstance._i
 sDestroyed){(e.componentInstance=Xe(e,sr,n,r)).$mount(t?e.elm:void 0,t)}else if(e.data.keepAlive){var o=e;gr.prepatch(o,o)}},prepatch:function(e,t){var n=t.componentOptions;ge(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t=e.context,n=e.componentInstance;n._isMounted||(n._isMounted=!0,Ee(n,"mounted")),e.data.keepAlive&&(t._isMounted?ke(n):we(n,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?Oe(t,!0):t.$destroy())}},br=Object.keys(gr),wr=1,Or=2,Er=0;!function(e){e.prototype._init=function(e){var t=this;t._uid=Er++,t._isVue=!0,e&&e._isComponent?dt(t,e):t.$options=q(pt(t.constructor),e||{},t),t._renderProxy=t,t._self=t,ye(t),le(t),ft(t),Ee(t,"beforeCreate"),We(t),Pe(t),qe(t),Ee(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(mt),function(e){var t={};t.get=function(){return this._data};var n={};n.get=function(){return this._props},Object.defineProperty(e.prototype,"$data",t),Object.defin
 eProperty(e.prototype,"$props",n),e.prototype.$set=$,e.prototype.$delete=R,e.prototype.$watch=function(e,t,n){var r=this;n=n||{},n.user=!0;var o=new vr(r,e,t,n);return n.immediate&&t.call(r,o.value),function(){o.teardown()}}}(mt),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this,o=this;if(Array.isArray(e))for(var i=0,a=e.length;i<a;i++)r.$on(e[i],n);else(o._events[e]||(o._events[e]=[])).push(n),t.test(e)&&(o._hasHookEvent=!0);return o},e.prototype.$once=function(e,t){function n(){r.$off(e,n),t.apply(r,arguments)}var r=this;return n.fn=t,r.$on(e,n),r},e.prototype.$off=function(e,t){var n=this,r=this;if(!arguments.length)return r._events=Object.create(null),r;if(Array.isArray(e)){for(var o=0,i=e.length;o<i;o++)n.$off(e[o],t);return r}var a=r._events[e];if(!a)return r;if(1===arguments.length)return r._events[e]=null,r;for(var s,u=a.length;u--;)if((s=a[u])===t||s.fn===t){a.splice(u,1);break}return r},e.prototype.$emit=function(e){var t=this,n=t._events[e];if(n){n=n.len
 gth>1?y(n):n;for(var r=y(arguments,1),o=0,i=n.length;o<i;o++)n[o].apply(t,r)}return t}}(mt),function(e){e.prototype._update=function(e,t){var n=this;n._isMounted&&Ee(n,"beforeUpdate");var r=n.$el,o=n._vnode,i=sr;sr=n,n._vnode=e,n.$el=o?n.__patch__(o,e):n.__patch__(n.$el,e,t,!1,n.$options._parentElm,n.$options._refElm),sr=i,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){var e=this;e._watcher&&e._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Ee(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||p(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Ee(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$options._parentElm=e.$options._refElm=null}}
 }(mt),function(e){e.prototype.$nextTick=function(e){return Wn(e,this)},e.prototype._render=function(){var e=this,t=e.$options,n=t.render,r=t.staticRenderFns,o=t._parentVnode;if(e._isMounted)for(var i in e.$slots)e.$slots[i]=Z(e.$slots[i]);e.$scopedSlots=o&&o.data.scopedSlots||An,r&&!e._staticTrees&&(e._staticTrees=[]),e.$vnode=o;var a;try{a=n.call(e._renderProxy,e.$createElement)}catch(t){k(t,e,"render function"),a=e._vnode}return a instanceof tr||(a=or()),a.parent=o,a},e.prototype._o=ut,e.prototype._n=f,e.prototype._s=l,e.prototype._l=nt,e.prototype._t=rt,e.prototype._q=w,e.prototype._i=O,e.prototype._m=st,e.prototype._f=ot,e.prototype._k=it,e.prototype._b=at,e.prototype._v=X,e.prototype._e=or,e.prototype._u=me}(mt);var xr=[String,RegExp],Sr={name:"keep-alive",abstract:!0,props:{include:xr,exclude:xr},created:function(){this.cache=Object.create(null)},destroyed:function(){var e=this;for(var t in e.cache)Ct(e.cache[t])},watch:{include:function(e){St(this.cache,this._vnode,function(t
 ){return xt(e,t)})},exclude:function(e){St(this.cache,this._vnode,function(t){return!xt(e,t)})}},render:function(){var e=ce(this.$slots.default),t=e&&e.componentOptions;if(t){var n=Et(t);if(n&&(this.include&&!xt(this.include,n)||this.exclude&&xt(this.exclude,n)))return e;var r=null==e.key?t.Ctor.cid+(t.tag?"::"+t.tag:""):e.key;this.cache[r]?e.componentInstance=this.cache[r].componentInstance:this.cache[r]=e,e.data.keepAlive=!0}return e}},Cr={KeepAlive:Sr};!function(e){var t={};t.get=function(){return jn},Object.defineProperty(e,"config",t),e.util={warn:Tn,extend:_,mergeOptions:q,defineReactive:M},e.set=$,e.delete=R,e.nextTick=Wn,e.options=Object.create(null),Cn.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,_(e.options.components,Cr),yt(e),_t(e),gt(e),Ot(e)}(mt),Object.defineProperty(mt.prototype,"$isServer",{get:Bn}),Object.defineProperty(mt.prototype,"$ssrContext",{get:function(){return this.$vnode.ssrContext}}),mt.version="2.3.3";var kr,jr={},Ar=Obje
 ct.freeze({namespaceMap:jr,createElement:kt,createElementNS:jt,createTextNode:At,createComment:It,insertBefore:Tt,removeChild:Nt,appendChild:Pt,parentNode:Mt,nextSibling:$t,tagName:Rt,setTextContent:Dt,setAttribute:Ft}),Ir={create:function(e,t){Lt(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Lt(e,!0),Lt(t))},destroy:function(e){Lt(e,!0)}},Tr=new tr("",{},[]),Nr=["create","activate","update","remove","destroy"],Pr={create:qt,update:qt,destroy:function(e){qt(e,Tr)}},Mr=Object.create(null),$r=[Ir,Pr],Rr={create:Gt,update:Gt},Dr={create:Xt,update:Xt},Fr={create:Yt,update:Yt},Lr=v(gn),Ur={create:en,update:tn},Br=v(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),Vr=(Pn&&window.requestAnimationFrame&&window.requestAnimationFrame.bind(window),{create:on,activate:on,remove:an}),qr=[Rr,Dr,Fr,Ur,Vr],Wr=qr.concat($r),zr=function(e){function t(e){ret
 urn new tr(I.tagName(e).toLowerCase(),{},[],void 0,e)}function i(e,t){function n(){0==--n.listeners&&s(e)}return n.listeners=t,n}function s(e){var t=I.parentNode(e);r(t)&&I.removeChild(t,e)}function u(e,t,n,i,a){if(e.isRootInsert=!a,!c(e,t,n,i)){var s=e.data,u=e.children,l=e.tag;if(r(l)){e.elm=e.ns?I.createElementNS(e.ns,l):I.createElement(l,e),y(e);var f=r(s)&&o(s.appendAsTree);f||(r(s)&&m(e,t),p(n,e.elm,i)),h(e,u,t),f&&(r(s)&&m(e,t),p(n,e.elm,i))}else o(e.isComment)?(e.elm=I.createComment(e.text),p(n,e.elm,i)):(e.elm=I.createTextNode(e.text),p(n,e.elm,i))}}function c(e,t,n,i){var a=e.data;if(r(a)){var s=r(e.componentInstance)&&a.keepAlive;if(r(a=a.hook)&&r(a=a.init)&&a(e,!1,n,i),r(e.componentInstance))return l(e,t),o(s)&&f(e,t,n,i),!0}}function l(e,t){r(e.data.pendingInsert)&&t.push.apply(t,e.data.pendingInsert),e.elm=e.componentInstance.$el,v(e)?(m(e,t),y(e)):(Lt(e),t.push(e))}function f(e,t,n,o){for(var i,a=e;a.componentInstance;)if(a=a.componentInstance._vnode,r(i=a.data)&&r(i=
 i.transition)){for(i=0;i<j.activate.length;++i)j.activate[i](Tr,a);t.push(a);break}p(n,e.elm,o)}function p(e,t,n){r(e)&&(r(n)?n.parentNode===e&&I.insertBefore(e,t,n):I.appendChild(e,t))}function h(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)u(t[r],n,e.elm,null,!0);else a(e.text)&&I.appendChild(e.elm,I.createTextNode(e.text))}function v(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return r(e.tag)}function m(e,t){for(var n=0;n<j.create.length;++n)j.create[n](Tr,e);C=e.data.hook,r(C)&&(r(C.create)&&C.create(Tr,e),r(C.insert)&&t.push(e))}function y(e){for(var t,n=e;n;)r(t=n.context)&&r(t=t.$options._scopeId)&&I.setAttribute(e.elm,t,""),n=n.parent;r(t=sr)&&t!==e.context&&r(t=t.$options._scopeId)&&I.setAttribute(e.elm,t,"")}function _(e,t,n,r,o,i){for(;r<=o;++r)u(n[r],i,e,t)}function g(e){var t,n,o=e.data;if(r(o))for(r(t=o.hook)&&r(t=t.destroy)&&t(e),t=0;t<j.destroy.length;++t)j.destroy[t](e);if(r(t=e.children))for(n=0;n<e.children.length;++n)g(e.children[n])}functi
 on b(e,t,n,o){for(;n<=o;++n){var i=t[n];r(i)&&(r(i.tag)?(w(i),g(i)):s(i.elm))}}function w(e,t){if(r(t)||r(e.data)){var n,o=j.remove.length+1;for(r(t)?t.listeners+=o:t=i(e.elm,o),r(n=e.componentInstance)&&r(n=n._vnode)&&r(n.data)&&w(n,t),n=0;n<j.remove.length;++n)j.remove[n](e,t);r(n=e.data.hook)&&r(n=n.remove)?n(e,t):t()}else s(e.elm)}function O(e,t,o,i,a){for(var s,c,l,f,d=0,p=0,h=t.length-1,v=t[0],m=t[h],y=o.length-1,g=o[0],w=o[y],O=!a;d<=h&&p<=y;)n(v)?v=t[++d]:n(m)?m=t[--h]:Ut(v,g)?(E(v,g,i),v=t[++d],g=o[++p]):Ut(m,w)?(E(m,w,i),m=t[--h],w=o[--y]):Ut(v,w)?(E(v,w,i),O&&I.insertBefore(e,v.elm,I.nextSibling(m.elm)),v=t[++d],w=o[--y]):Ut(m,g)?(E(m,g,i),O&&I.insertBefore(e,m.elm,v.elm),m=t[--h],g=o[++p]):(n(s)&&(s=Vt(t,d,h)),c=r(g.key)?s[g.key]:null,n(c)?(u(g,i,e,v.elm),g=o[++p]):(l=t[c],Ut(l,g)?(E(l,g,i),t[c]=void 0,O&&I.insertBefore(e,g.elm,v.elm),g=o[++p]):(u(g,i,e,v.elm),g=o[++p])));d>h?(f=n(o[y+1])?null:o[y+1].elm,_(e,f,o,p,y,i)):p>y&&b(e,t,d,h)}function E(e,t,i,a){if(e!==t){if(o(
 t.isStatic)&&o(e.isStatic)&&t.key===e.key&&(o(t.isCloned)||o(t.isOnce)))return t.elm=e.elm,void(t.componentInstance=e.componentInstance);var s,u=t.data;r(u)&&r(s=u.hook)&&r(s=s.prepatch)&&s(e,t);var c=t.elm=e.elm,l=e.children,f=t.children;if(r(u)&&v(t)){for(s=0;s<j.update.length;++s)j.update[s](e,t);r(s=u.hook)&&r(s=s.update)&&s(e,t)}n(t.text)?r(l)&&r(f)?l!==f&&O(c,l,f,i,a):r(f)?(r(e.text)&&I.setTextContent(c,""),_(c,null,f,0,f.length-1,i)):r(l)?b(c,l,0,l.length-1):r(e.text)&&I.setTextContent(c,""):e.text!==t.text&&I.setTextContent(c,t.text),r(u)&&r(s=u.hook)&&r(s=s.postpatch)&&s(e,t)}}function x(e,t,n){if(o(n)&&r(e.parent))e.parent.data.pendingInsert=t;else for(var i=0;i<t.length;++i)t[i].data.hook.insert(t[i])}function S(e,t,n){t.elm=e;var o=t.tag,i=t.data,a=t.children;if(r(i)&&(r(C=i.hook)&&r(C=C.init)&&C(t,!0),r(C=t.componentInstance)))return l(t,n),!0;if(r(o)){if(r(a))if(e.hasChildNodes()){for(var s=!0,u=e.firstChild,c=0;c<a.length;c++){if(!u||!S(u,a[c],n)){s=!1;break}u=u.nextS
 ibling}if(!s||u)return!1}else h(t,a,n);if(r(i))for(var f in i)if(!T(f)){m(t,n);break}}else e.data!==t.text&&(e.data=t.text);return!0}var C,k,j={},A=e.modules,I=e.nodeOps;for(C=0;C<Nr.length;++C)for(j[Nr[C]]=[],k=0;k<A.length;++k)r(A[k][Nr[C]])&&j[Nr[C]].push(A[k][Nr[C]]);var T=d("attrs,style,class,staticClass,staticStyle,key");return function(e,i,a,s,c,l){if(n(i))return void(r(e)&&g(e));var f=!1,d=[];if(n(e))f=!0,u(i,d,c,l);else{var p=r(e.nodeType);if(!p&&Ut(e,i))E(e,i,d,s);else{if(p){if(1===e.nodeType&&e.hasAttribute(Sn)&&(e.removeAttribute(Sn),a=!0),o(a)&&S(e,i,d))return x(i,d,!0),e;e=t(e)}var h=e.elm,m=I.parentNode(h);if(u(i,d,h._leaveCb?null:m,I.nextSibling(h)),r(i.parent)){for(var y=i.parent;y;)y.elm=i.elm,y=y.parent;if(v(i))for(var _=0;_<j.create.length;++_)j.create[_](Tr,i.parent)}r(m)?b(m,[e],0,0):r(e.tag)&&g(e)}}return x(i,d,f),i.elm}}({nodeOps:Ar,modules:Wr,LONG_LIST_THRESHOLD:10}),Jr={},Hr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,l
 eaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},Gr={name:"transition",props:Hr,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(function(e){return e.tag}),n.length)){var r=this.mode,o=n[0];if(fn(this.$vnode))return o;var i=un(o);if(!i)return o;if(this._leaving)return ln(e,o);var s="__transition-"+this._uid+"-";i.key=null==i.key?s+i.tag:a(i.key)?0===String(i.key).indexOf(s)?i.key:s+i.key:i.key;var u=(i.data||(i.data={})).transition=cn(this),c=this._vnode,l=un(c);if(i.data.directives&&i.data.directives.some(function(e){return"show"===e.name})&&(i.data.show=!0),l&&l.data&&!dn(i,l)){var f=l&&(l.data.transition=_({},u));if("out-in"===r)return this._leaving=!0,ee(f,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),ln(e,o);if("in-out"===r){var d,p=function(){d()};ee(u,"afterEnter",p),ee(u,"enterCan
 celled",p),ee(f,"delayLeave",function(e){d=e})}}return o}}},Xr=_({tag:String,moveClass:String},Hr);delete Xr.mode;var Kr={props:Xr,created:function(){var e=this.$requireWeexModule("dom");this.getPosition=function(t){return new Promise(function(n,r){e.getComponentRect(t.ref,function(e){e.result?n(e.size):r(new Error("failed to get rect for element: "+t.tag))})})};var t=this.$requireWeexModule("animation");this.animate=function(e,n){return new Promise(function(r){t.transition(e.ref,n,r)})}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=cn(this),s=0;s<o.length;s++){var u=o[s];u.tag&&null!=u.key&&0!==String(u.key).indexOf("__vlist")&&(i.push(u),n[u.key]=u,(u.data||(u.data={})).transition=a)}if(r){var c=[],l=[];r.forEach(function(e){e.data.transition=a,n[e.key]?c.push(e):l.push(e)}),this.kept=e(t,null,c),this.removed=l}return e(t,null,i)},beforeUpdate:function(){th
 is.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||"v")+"-move";e.length&&this.getMoveData(e[0].context,t)},methods:{getMoveData:function(e,t){var n=e.$options.style||{};return n["@TRANSITION"]&&n["@TRANSITION"][t]}}},Zr={Transition:Gr,TransitionGroup:Kr},Qr=d("template,script,style,element,content,slot,link,meta,svg,view,a,div,img,image,text,span,richtext,input,switch,textarea,spinner,select,slider,slider-neighbor,indicator,trisition,trisition-group,canvas,list,cell,header,loading,loading-indicator,refresh,scrollable,scroller,video,web,embed,tabbar,tabheader,datepicker,timepicker,marquee,countdown",!0);d("web,spinner,switch,video,textarea,canvas,indicator,marquee,countdown",!0),d("embed,img,image,input,link,meta",!0);mt.config.mustUseProp=pn,mt.config.isReservedTag=Qr,mt.config.isUnknownElement=hn,mt.options.directives=Jr,mt.options.components=Zr,mt.prototype.__patch__=zr,mt.prototype.$mount=func
 tion(e,t){return _e(this,e&&vn(e,this.$document),t)},e.Vue=mt},ur=f(function(e,t){function n(e){this.instanceId="",this.nodeId=E++,this.parentNode=null,this.nodeType=3,this.text=e}function r(e){j.Document=e.Document,j.Element=e.Eleme

<TRUNCATED>


[4/8] incubator-weex git commit: + [example] add websocket arraybuffer demo

Posted by ac...@apache.org.
+ [example] add websocket arraybuffer demo


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/09669574
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/09669574
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/09669574

Branch: refs/heads/0.16-dev
Commit: 096695744c4cb7767a6942c1fb7219129aa6d687
Parents: ec94e28
Author: 齐山 <su...@163.com>
Authored: Tue Aug 8 15:40:02 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Aug 8 15:40:02 2017 +0800

----------------------------------------------------------------------
 examples/vue/modules/websocket.vue | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/09669574/examples/vue/modules/websocket.vue
----------------------------------------------------------------------
diff --git a/examples/vue/modules/websocket.vue b/examples/vue/modules/websocket.vue
index e2ab2ce..2620677 100644
--- a/examples/vue/modules/websocket.vue
+++ b/examples/vue/modules/websocket.vue
@@ -8,6 +8,7 @@
       <div style="flex-direction: row; justify-content: center;">
         <text class="button" @click="connect">connect</text>
         <text class="button" @click="send">send</text>
+        <text class="button" @click="sendArrayBuffer">sendArrayBuffer</text>
         <text class="button" @click="close">close</text>
       </div>
       <div style="background-color: lightgray">
@@ -80,6 +81,7 @@
       }
     },
     methods: {
+
       connect: function() {
         websocket.WebSocket('ws://echo.websocket.org', '');
         var self = this;
@@ -88,13 +90,14 @@
           self.onopeninfo = 'websocket open';
         }
         websocket.onmessage = function(e) {
-          if(typeof(e.data) === 'String'){
+          console.log(typeof(e.data));
+          if(typeof(e.data) === 'string'){
             self.onmessage = e.data;
           }else
           {
-            self.onmessage = 'you receive array buffer'
+            var str = 'receive array buffer show with string:' +  String.fromCharCode.apply(null, new Float32Array(e.data));
+            self.onmessage = str;
           }
-
         }
         websocket.onerror = function(e) {
           self.onerrorinfo = e.data;
@@ -107,13 +110,19 @@
       send: function(e) {
         var input = this.$refs.input;
         input.blur();
+        websocket.send(this.txtInput);
+        this.sendinfo = this.txtInput;
+      },
+      sendArrayBuffer: function(e) {
+        var input = this.$refs.input;
+        input.blur();
         var buffer = new ArrayBuffer(16)
         var view = new Float32Array(buffer)
         view.set([4,89,36.9,0.765])
         console.log(buffer);
-        this.sendinfo = buffer;
+        var str = 'send array buffer show with string:' +  String.fromCharCode.apply(null, new Float32Array(buffer));
+        this.sendinfo = str;
         websocket.send(buffer);
-        this.sendinfo = this.txtInput;
       },
       oninput: function(event) {
         this.txtInput = event.value;


[5/8] incubator-weex git commit: + [ios] add array buffer for stream

Posted by ac...@apache.org.
+ [ios] add array buffer for stream


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/c914eb16
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/c914eb16
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/c914eb16

Branch: refs/heads/0.16-dev
Commit: c914eb164644a4fc77aae4e8cf0d0516734f3ad6
Parents: 0966957
Author: 齐山 <su...@163.com>
Authored: Tue Aug 8 16:02:39 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Aug 8 16:02:39 2017 +0800

----------------------------------------------------------------------
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m | 13 +++++++++++++
 1 file changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/c914eb16/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
index a386fd0..4b01cde 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
@@ -32,6 +32,7 @@
 
 WX_EXPORT_METHOD(@selector(sendHttp:callback:))
 WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
+WX_EXPORT_METHOD(@selector(fetchWithArrayBuffer:options:callback:progressCallback:))
 
 - (void)fetch:(NSDictionary *)options callback:(WXModuleCallback)callback progressCallback:(WXModuleKeepAliveCallback)progressCallback
 {
@@ -104,6 +105,18 @@ WX_EXPORT_METHOD(@selector(fetch:callback:progressCallback:))
     [loader start];
 }
 
+- (void)fetchWithArrayBuffer:(id)arrayBuffer options:(NSDictionary *)options callback:(WXModuleCallback)callback progressCallback:(WXModuleKeepAliveCallback)progressCallback
+{
+    NSMutableDictionary *newOptions = [options mutableCopy];
+    if([arrayBuffer isKindOfClass:[NSDictionary class]]){
+        NSData *sendData = [WXUtility base64DictToData:arrayBuffer];
+        if(sendData){
+            [newOptions setObject:sendData forKey:@"body"];
+        }
+    }
+    [self fetch:newOptions callback:callback progressCallback:progressCallback];
+}
+
 - (WXResourceRequest*)_buildRequestWithOptions:(NSDictionary*)options callbackRsp:(NSMutableDictionary*)callbackRsp
 {
     // parse request url


[2/8] incubator-weex git commit: + [ios] add array buffer support

Posted by ac...@apache.org.
+ [ios] add array buffer support


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/fd8f1770
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/fd8f1770
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/fd8f1770

Branch: refs/heads/0.16-dev
Commit: fd8f177020b712724c52a02052b20e06d2d22661
Parents: 1aa0bf4
Author: 齐山 <su...@163.com>
Authored: Wed Aug 2 16:27:11 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Wed Aug 2 16:27:11 2017 +0800

----------------------------------------------------------------------
 examples/vue/modules/websocket.vue              |    15 +-
 .../WeexSDK/Sources/Loader/WXWebSocketLoader.h  |     2 +-
 .../WeexSDK/Sources/Loader/WXWebSocketLoader.m  |     2 +-
 .../WeexSDK/Sources/Module/WXWebSocketModule.m  |    20 +-
 .../Sources/WebSocket/WXWebSocketDefaultImpl.m  |     2 +-
 pre-build/native-bundle-main.js                 | 26024 ++++++++++++++++-
 6 files changed, 26050 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/examples/vue/modules/websocket.vue
----------------------------------------------------------------------
diff --git a/examples/vue/modules/websocket.vue b/examples/vue/modules/websocket.vue
index 72d7ea1..e6ba2e1 100644
--- a/examples/vue/modules/websocket.vue
+++ b/examples/vue/modules/websocket.vue
@@ -88,7 +88,13 @@
           self.onopeninfo = 'websocket open';
         }
         websocket.onmessage = function(e) {
-          self.onmessage = e.data;
+          if(Object.prototype.toString.apply(e.data) === 'ArrayBuffer'){
+            self.onmessage = 'you receive array buffer'
+          }
+          if(Object.prototype.toString.apply(e.data) === 'String'){
+            self.onmessage = e.data;
+          }
+
         }
         websocket.onerror = function(e) {
           self.onerrorinfo = e.data;
@@ -101,7 +107,12 @@
       send: function(e) {
         var input = this.$refs.input;
         input.blur();
-        websocket.send(this.txtInput);
+        var buffer = new ArrayBuffer(16)
+        var view = new Float32Array(buffer)
+        view.set([4,89,36.9,0.765])
+        console.log(buffer);
+        this.sendinfo = buffer;
+        websocket.send(buffer);
         this.sendinfo = this.txtInput;
       },
       oninput: function(event) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h
index 378a85e..95e5398 100644
--- a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h
+++ b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.h
@@ -28,7 +28,7 @@
 
 - (instancetype)initWithUrl:(NSString *)url protocol:(NSString *)protocol;
 - (void)open;
-- (void)send:(NSString *)data;
+- (void)send:(id)data;
 - (void)close;
 - (void)close:(NSInteger)code reason:(NSString *)reason;
 - (void)clear;

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m
index c751c0a..7821ed6 100644
--- a/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m
+++ b/ios/sdk/WeexSDK/Sources/Loader/WXWebSocketLoader.m
@@ -74,7 +74,7 @@
     }
 }
 
-- (void)send:(NSString *)data
+- (void)send:(id)data
 {
     id<WXWebSocketHandler> requestHandler = [WXHandlerFactory handlerForProtocol:@protocol(WXWebSocketHandler)];
     if (requestHandler) {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m b/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
index 018103a..046702d 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
@@ -61,6 +61,12 @@ WX_EXPORT_METHOD(@selector(onclose:))
             NSMutableDictionary *dic = [NSMutableDictionary new];
             if([message isKindOfClass:[NSString class]]) {
                 [dic setObject:message forKey:@"data"];
+            }else if([message isKindOfClass:[NSData class]]){
+                NSMutableDictionary *dataDict = [NSMutableDictionary new];
+                NSString *base64Encoded = [message base64EncodedStringWithOptions:0];
+                [dataDict setObject:@"binary" forKey:@"@type"];
+                [dataDict setObject:base64Encoded forKey:@"base64"];
+                [dic setObject:dataDict forKey:@"data"];
             }
             if (weakSelf.messageCallBack) {
                 weakSelf.messageCallBack(dic,true);;
@@ -103,9 +109,19 @@ WX_EXPORT_METHOD(@selector(onclose:))
     [loader open];
 }
 
-- (void)send:(NSString *)data
+- (void)send:(id)data
 {
-    [loader send:data];
+    if([data isKindOfClass:[NSString class]]){
+        [loader send:data];
+    }else if([data isKindOfClass:[NSDictionary class]]){
+        if([@"binary" isEqualToString:data[@"@type"]]){
+            NSString *base64 = data[@"base64"];
+            NSData *sendData = [[NSData alloc] initWithBase64EncodedString:base64 options:0];
+            [loader send:sendData];
+        }
+    }
+    
+    
 }
 
 - (void)close

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/fd8f1770/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m b/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m
index 951f385..c0b554e 100644
--- a/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m
+++ b/ios/sdk/WeexSDK/Sources/WebSocket/WXWebSocketDefaultImpl.m
@@ -56,7 +56,7 @@
     [_webSockets setObject:webSocket forKey:identifier];
 }
 
-- (void)send:(NSString *)identifier data:(NSString *)data
+- (void)send:(id)identifier data:(NSString *)data
 {
     SRWebSocket *webSocket = [_webSockets objectForKey:identifier];
     if(webSocket) {


[7/8] incubator-weex git commit: + [ios] main.js recover to last version

Posted by ac...@apache.org.
+ [ios] main.js recover to last version


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/0ccafb15
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/0ccafb15
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/0ccafb15

Branch: refs/heads/0.16-dev
Commit: 0ccafb1547dcbf3a752cbd59ca8f33c6189ae415
Parents: c914eb1
Author: 齐山 <su...@163.com>
Authored: Tue Aug 8 16:06:21 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Tue Aug 8 16:06:21 2017 +0800

----------------------------------------------------------------------
 pre-build/native-bundle-main.js | 26024 +--------------------------------
 1 file changed, 8 insertions(+), 26016 deletions(-)
----------------------------------------------------------------------



[3/8] incubator-weex git commit: + [ios] add logic to method

Posted by ac...@apache.org.
+ [ios] add logic to method


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ec94e28e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ec94e28e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ec94e28e

Branch: refs/heads/0.16-dev
Commit: ec94e28e545154d37759a8f8e5a888926762cff5
Parents: fd8f177
Author: 齐山 <su...@163.com>
Authored: Thu Aug 3 11:46:12 2017 +0800
Committer: 齐山 <su...@163.com>
Committed: Thu Aug 3 11:46:12 2017 +0800

----------------------------------------------------------------------
 examples/vue/modules/websocket.vue              |  8 +++----
 .../WeexSDK/Sources/Module/WXWebSocketModule.m  | 12 ++++-------
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     | 12 +++++++++++
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     | 22 ++++++++++++++++++++
 4 files changed, 42 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ec94e28e/examples/vue/modules/websocket.vue
----------------------------------------------------------------------
diff --git a/examples/vue/modules/websocket.vue b/examples/vue/modules/websocket.vue
index e6ba2e1..e2ab2ce 100644
--- a/examples/vue/modules/websocket.vue
+++ b/examples/vue/modules/websocket.vue
@@ -88,11 +88,11 @@
           self.onopeninfo = 'websocket open';
         }
         websocket.onmessage = function(e) {
-          if(Object.prototype.toString.apply(e.data) === 'ArrayBuffer'){
-            self.onmessage = 'you receive array buffer'
-          }
-          if(Object.prototype.toString.apply(e.data) === 'String'){
+          if(typeof(e.data) === 'String'){
             self.onmessage = e.data;
+          }else
+          {
+            self.onmessage = 'you receive array buffer'
           }
 
         }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ec94e28e/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m b/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
index 046702d..e12a11b 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXWebSocketModule.m
@@ -62,11 +62,7 @@ WX_EXPORT_METHOD(@selector(onclose:))
             if([message isKindOfClass:[NSString class]]) {
                 [dic setObject:message forKey:@"data"];
             }else if([message isKindOfClass:[NSData class]]){
-                NSMutableDictionary *dataDict = [NSMutableDictionary new];
-                NSString *base64Encoded = [message base64EncodedStringWithOptions:0];
-                [dataDict setObject:@"binary" forKey:@"@type"];
-                [dataDict setObject:base64Encoded forKey:@"base64"];
-                [dic setObject:dataDict forKey:@"data"];
+                [dic setObject:[WXUtility dataToBase64Dict:message] forKey:@"data"];
             }
             if (weakSelf.messageCallBack) {
                 weakSelf.messageCallBack(dic,true);;
@@ -114,11 +110,11 @@ WX_EXPORT_METHOD(@selector(onclose:))
     if([data isKindOfClass:[NSString class]]){
         [loader send:data];
     }else if([data isKindOfClass:[NSDictionary class]]){
-        if([@"binary" isEqualToString:data[@"@type"]]){
-            NSString *base64 = data[@"base64"];
-            NSData *sendData = [[NSData alloc] initWithBase64EncodedString:base64 options:0];
+        NSData *sendData = [WXUtility base64DictToData:data];
+        if(sendData){
             [loader send:sendData];
         }
+        
     }
     
     

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ec94e28e/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
index 715617d..5d96757 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
@@ -439,4 +439,16 @@ BOOL WXFloatGreaterThanWithPrecision(CGFloat a,CGFloat b,double precision);
  */
 + (void)customMonitorInfo:(WXSDKInstance *_Nullable)instance key:(NSString * _Nonnull)key value:(id _Nonnull)value;
 
+/**
+ *  @abstract format to base64 dictionary
+ *
+ */
++ (NSDictionary *_Nonnull)dataToBase64Dict:(NSData *_Nullable)data;
+
+/**
+ *  @abstract format to data
+ *
+ */
++ (NSData *_Nonnull)base64DictToData:(NSDictionary *_Nullable)base64Dict;
+
 @end

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ec94e28e/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
index 030ffc8..5487525 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
@@ -901,6 +901,28 @@ BOOL WXFloatGreaterThanWithPrecision(CGFloat a, CGFloat b ,double precision){
     [custormMonitorDict setObject:value forKey:key];
     instance.userInfo[WXCUSTOMMONITORINFO] = custormMonitorDict;
 }
+
++ (NSDictionary *_Nonnull)dataToBase64Dict:(NSData *_Nullable)data
+{
+    NSMutableDictionary *dataDict = [NSMutableDictionary new];
+    if(data){
+        NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
+        [dataDict setObject:@"binary" forKey:@"@type"];
+        [dataDict setObject:base64Encoded forKey:@"base64"];
+    }
+    
+    return dataDict;
+}
+
++ (NSData *_Nonnull)base64DictToData:(NSDictionary *_Nullable)base64Dict
+{
+    if([@"binary" isEqualToString:base64Dict[@"@type"]]){
+        NSString *base64 = base64Dict[@"base64"];
+        NSData *sendData = [[NSData alloc] initWithBase64EncodedString:base64 options:0];
+        return sendData;
+    }
+    return nil;
+}
 @end
 
 


[8/8] incubator-weex git commit: Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex; branch 'ios-arraybuffer-0.16-dev' of https://github.com/kfeagle/incubator-weex into wip-us-0.16-dev

Posted by ac...@apache.org.
Merge branch '0.16-dev' of https://git-wip-us.apache.org/repos/asf/incubator-weex; branch 'ios-arraybuffer-0.16-dev' of https://github.com/kfeagle/incubator-weex into wip-us-0.16-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/e3776995
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/e3776995
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/e3776995

Branch: refs/heads/0.16-dev
Commit: e37769951ddd99d41862165bdf778a3b9b9d26e4
Parents: 5894ef6 0ccafb1
Author: acton393 <zh...@gmail.com>
Authored: Thu Aug 10 17:06:32 2017 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Aug 10 17:06:32 2017 +0800

----------------------------------------------------------------------
 examples/vue/modules/websocket.vue              | 22 +++++++++++++++++++-
 .../WeexSDK/Sources/Loader/WXWebSocketLoader.h  |  2 +-
 .../WeexSDK/Sources/Loader/WXWebSocketLoader.m  |  2 +-
 ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m | 13 ++++++++++++
 .../WeexSDK/Sources/Module/WXWebSocketModule.m  | 16 ++++++++++++--
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.h     | 12 +++++++++++
 ios/sdk/WeexSDK/Sources/Utility/WXUtility.m     | 22 ++++++++++++++++++++
 .../Sources/WebSocket/WXWebSocketDefaultImpl.m  |  2 +-
 8 files changed, 85 insertions(+), 6 deletions(-)
----------------------------------------------------------------------



[6/8] incubator-weex git commit: + [ios] main.js recover to last version

Posted by ac...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/0ccafb15/pre-build/native-bundle-main.js
----------------------------------------------------------------------
diff --git a/pre-build/native-bundle-main.js b/pre-build/native-bundle-main.js
index c301681..e24c730 100644
--- a/pre-build/native-bundle-main.js
+++ b/pre-build/native-bundle-main.js
@@ -1,26016 +1,8 @@
-(this.nativeLog || function(s) {console.log(s)})('START JS FRAMEWORK 0.21.7-beta.2, Build 2017-08-02 15:59.');
-(this.getJSFMVersion = function(){return "0.21.7-beta.2"});var global = this, process = { env: {} };var setTimeout = global.setTimeout;
-
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
-	typeof define === 'function' && define.amd ? define(factory) :
-	(factory());
-}(this, (function () { 'use strict';
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-var config = {};
-
-var instanceMap = {};
-
-function init$1 (cfg) {
-  config.Document = cfg.Document;
-  config.Element = cfg.Element;
-  config.Comment = cfg.Comment;
-  config.sendTasks = cfg.sendTasks;
-}
-
-function registerComponents (components) {}
-
-function registerModules (modules) {}
-
-function registerMethods (apis) {}
-
-function prepareInstance (id, options, data) {}
-
-function createInstance (id, code, options, data, serviceObjects) {
-  var document = new config.Document(id, options.bundleUrl);
-  var callbacks = {};
-
-  var lastCallbackId = 0;
-  document.addCallback = function (func) {
-    lastCallbackId++;
-    callbacks[lastCallbackId] = func;
-    return lastCallbackId
-  };
-  document.handleCallback = function (funcId, data, ifLast) {
-    var callback = callbacks[funcId];
-    if (ifLast) {
-      delete callbacks[funcId];
-    }
-    return callback(data)
-  };
-  instanceMap[id] = document;
-
-  var globalObjects = Object.assign({
-    Document: config.Document,
-    Element: config.Element,
-    Comment: config.Comment,
-    sendTasks: config.sendTasks,
-    id: id, options: options, data: data, document: document
-  }, serviceObjects);
-
-  var globalKeys = [];
-  var globalValues = [];
-  for (var key in globalObjects) {
-    globalKeys.push(key);
-    globalValues.push(globalObjects[key]);
-  }
-  globalKeys.push(code);
-
-  var result = new (Function.prototype.bind.apply( Function, [ null ].concat( globalKeys) ));
-  result.apply(void 0, globalValues);
-
-  return { document: document }
-}
-
-function refreshInstance (id, data) {}
-
-function destroyInstance (id) {
-  delete instanceMap[id];
-}
-
-function getRoot (id) {
-  return instanceMap[id].body.toJSON()
-}
-
-function receiveTasks (id, tasks) {
-  var jsHandlers = {
-    fireEvent: function (id, ref, type, data, domChanges) {
-      var document = instanceMap[id];
-      var el = document.getRef(ref);
-      return document.fireEvent(el, type, data, domChanges)
-    },
-
-    callback: function (id, funcId, data, ifLast) {
-      var document = instanceMap[id];
-      return document.handleCallback(funcId, data, ifLast)
-    }
-  };
-
-  var document = instanceMap[id];
-  if (document && Array.isArray(tasks)) {
-    var results = [];
-    tasks.forEach(function (task) {
-      var handler = jsHandlers[task.method];
-      var args = [].concat( task.args );
-      if (typeof handler === 'function') {
-        args.unshift(id);
-        results.push(handler.apply(void 0, args));
-      }
-    });
-    return results
-  }
-}
-
-
-var Vanilla = Object.freeze({
-	init: init$1,
-	registerComponents: registerComponents,
-	registerModules: registerModules,
-	registerMethods: registerMethods,
-	prepareInstance: prepareInstance,
-	createInstance: createInstance,
-	refreshInstance: refreshInstance,
-	destroyInstance: destroyInstance,
-	getRoot: getRoot,
-	receiveTasks: receiveTasks
-});
-
-var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
-
-
-function unwrapExports (x) {
-	return x && x.__esModule ? x['default'] : x;
-}
-
-function createCommonjsModule(fn, module) {
-	return module = { exports: {} }, fn(module, module.exports), module.exports;
-}
-
-var factory = createCommonjsModule(function (module) {
-'use strict';
-
-module.exports = function weexFactory (exports, renderer) {
-
-/*  */
-
-// these helpers produces better vm code in JS engines due to their
-// explicitness and function inlining
-function isUndef (v) {
-  return v === undefined || v === null
-}
-
-function isDef (v) {
-  return v !== undefined && v !== null
-}
-
-function isTrue (v) {
-  return v === true
-}
-
-function isFalse (v) {
-  return v === false
-}
-
-/**
- * Check if value is primitive
- */
-function isPrimitive (value) {
-  return (
-    typeof value === 'string' ||
-    typeof value === 'number' ||
-    typeof value === 'boolean'
-  )
-}
-
-/**
- * Quick object check - this is primarily used to tell
- * Objects from primitive values when we know the value
- * is a JSON-compliant type.
- */
-function isObject (obj) {
-  return obj !== null && typeof obj === 'object'
-}
-
-var _toString = Object.prototype.toString;
-
-/**
- * Strict object type check. Only returns true
- * for plain JavaScript objects.
- */
-function isPlainObject (obj) {
-  return _toString.call(obj) === '[object Object]'
-}
-
-function isRegExp (v) {
-  return _toString.call(v) === '[object RegExp]'
-}
-
-/**
- * Check if val is a valid array index.
- */
-function isValidArrayIndex (val) {
-  var n = parseFloat(val);
-  return n >= 0 && Math.floor(n) === n && isFinite(val)
-}
-
-/**
- * Convert a value to a string that is actually rendered.
- */
-function toString (val) {
-  return val == null
-    ? ''
-    : typeof val === 'object'
-      ? JSON.stringify(val, null, 2)
-      : String(val)
-}
-
-/**
- * Convert a input value to a number for persistence.
- * If the conversion fails, return original string.
- */
-function toNumber (val) {
-  var n = parseFloat(val);
-  return isNaN(n) ? val : n
-}
-
-/**
- * Make a map and return a function for checking if a key
- * is in that map.
- */
-function makeMap (
-  str,
-  expectsLowerCase
-) {
-  var map = Object.create(null);
-  var list = str.split(',');
-  for (var i = 0; i < list.length; i++) {
-    map[list[i]] = true;
-  }
-  return expectsLowerCase
-    ? function (val) { return map[val.toLowerCase()]; }
-    : function (val) { return map[val]; }
-}
-
-/**
- * Check if a tag is a built-in tag.
- */
-var isBuiltInTag = makeMap('slot,component', true);
-
-/**
- * Check if a attribute is a reserved attribute.
- */
-var isReservedAttribute = makeMap('key,ref,slot,is');
-
-/**
- * Remove an item from an array
- */
-function remove (arr, item) {
-  if (arr.length) {
-    var index = arr.indexOf(item);
-    if (index > -1) {
-      return arr.splice(index, 1)
-    }
-  }
-}
-
-/**
- * Check whether the object has the property.
- */
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-function hasOwn (obj, key) {
-  return hasOwnProperty.call(obj, key)
-}
-
-/**
- * Create a cached version of a pure function.
- */
-function cached (fn) {
-  var cache = Object.create(null);
-  return (function cachedFn (str) {
-    var hit = cache[str];
-    return hit || (cache[str] = fn(str))
-  })
-}
-
-/**
- * Camelize a hyphen-delimited string.
- */
-var camelizeRE = /-(\w)/g;
-var camelize = cached(function (str) {
-  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
-});
-
-/**
- * Capitalize a string.
- */
-var capitalize = cached(function (str) {
-  return str.charAt(0).toUpperCase() + str.slice(1)
-});
-
-/**
- * Hyphenate a camelCase string.
- */
-var hyphenateRE = /([^-])([A-Z])/g;
-var hyphenate = cached(function (str) {
-  return str
-    .replace(hyphenateRE, '$1-$2')
-    .replace(hyphenateRE, '$1-$2')
-    .toLowerCase()
-});
-
-/**
- * Simple bind, faster than native
- */
-function bind (fn, ctx) {
-  function boundFn (a) {
-    var l = arguments.length;
-    return l
-      ? l > 1
-        ? fn.apply(ctx, arguments)
-        : fn.call(ctx, a)
-      : fn.call(ctx)
-  }
-  // record original fn length
-  boundFn._length = fn.length;
-  return boundFn
-}
-
-/**
- * Convert an Array-like object to a real Array.
- */
-function toArray (list, start) {
-  start = start || 0;
-  var i = list.length - start;
-  var ret = new Array(i);
-  while (i--) {
-    ret[i] = list[i + start];
-  }
-  return ret
-}
-
-/**
- * Mix properties into target object.
- */
-function extend (to, _from) {
-  for (var key in _from) {
-    to[key] = _from[key];
-  }
-  return to
-}
-
-/**
- * Merge an Array of Objects into a single Object.
- */
-function toObject (arr) {
-  var res = {};
-  for (var i = 0; i < arr.length; i++) {
-    if (arr[i]) {
-      extend(res, arr[i]);
-    }
-  }
-  return res
-}
-
-/**
- * Perform no operation.
- * Stubbing args to make Flow happy without leaving useless transpiled code
- * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)
- */
-function noop (a, b, c) {}
-
-/**
- * Always return false.
- */
-var no = function (a, b, c) { return false; };
-
-/**
- * Return same value
- */
-var identity = function (_) { return _; };
-
-/**
- * Generate a static keys string from compiler modules.
- */
-
-
-/**
- * Check if two values are loosely equal - that is,
- * if they are plain objects, do they have the same shape?
- */
-function looseEqual (a, b) {
-  if (a === b) { return true }
-  var isObjectA = isObject(a);
-  var isObjectB = isObject(b);
-  if (isObjectA && isObjectB) {
-    try {
-      var isArrayA = Array.isArray(a);
-      var isArrayB = Array.isArray(b);
-      if (isArrayA && isArrayB) {
-        return a.length === b.length && a.every(function (e, i) {
-          return looseEqual(e, b[i])
-        })
-      } else if (!isArrayA && !isArrayB) {
-        var keysA = Object.keys(a);
-        var keysB = Object.keys(b);
-        return keysA.length === keysB.length && keysA.every(function (key) {
-          return looseEqual(a[key], b[key])
-        })
-      } else {
-        /* istanbul ignore next */
-        return false
-      }
-    } catch (e) {
-      /* istanbul ignore next */
-      return false
-    }
-  } else if (!isObjectA && !isObjectB) {
-    return String(a) === String(b)
-  } else {
-    return false
-  }
-}
-
-function looseIndexOf (arr, val) {
-  for (var i = 0; i < arr.length; i++) {
-    if (looseEqual(arr[i], val)) { return i }
-  }
-  return -1
-}
-
-/**
- * Ensure a function is called only once.
- */
-function once (fn) {
-  var called = false;
-  return function () {
-    if (!called) {
-      called = true;
-      fn.apply(this, arguments);
-    }
-  }
-}
-
-var SSR_ATTR = 'data-server-rendered';
-
-var ASSET_TYPES = [
-  'component',
-  'directive',
-  'filter'
-];
-
-var LIFECYCLE_HOOKS = [
-  'beforeCreate',
-  'created',
-  'beforeMount',
-  'mounted',
-  'beforeUpdate',
-  'updated',
-  'beforeDestroy',
-  'destroyed',
-  'activated',
-  'deactivated'
-];
-
-/*  */
-
-var config = ({
-  /**
-   * Option merge strategies (used in core/util/options)
-   */
-  optionMergeStrategies: Object.create(null),
-
-  /**
-   * Whether to suppress warnings.
-   */
-  silent: false,
-
-  /**
-   * Show production mode tip message on boot?
-   */
-  productionTip: "development" !== 'production',
-
-  /**
-   * Whether to enable devtools
-   */
-  devtools: "development" !== 'production',
-
-  /**
-   * Whether to record perf
-   */
-  performance: false,
-
-  /**
-   * Error handler for watcher errors
-   */
-  errorHandler: null,
-
-  /**
-   * Warn handler for watcher warns
-   */
-  warnHandler: null,
-
-  /**
-   * Ignore certain custom elements
-   */
-  ignoredElements: [],
-
-  /**
-   * Custom user key aliases for v-on
-   */
-  keyCodes: Object.create(null),
-
-  /**
-   * Check if a tag is reserved so that it cannot be registered as a
-   * component. This is platform-dependent and may be overwritten.
-   */
-  isReservedTag: no,
-
-  /**
-   * Check if an attribute is reserved so that it cannot be used as a component
-   * prop. This is platform-dependent and may be overwritten.
-   */
-  isReservedAttr: no,
-
-  /**
-   * Check if a tag is an unknown element.
-   * Platform-dependent.
-   */
-  isUnknownElement: no,
-
-  /**
-   * Get the namespace of an element
-   */
-  getTagNamespace: noop,
-
-  /**
-   * Parse the real tag name for the specific platform.
-   */
-  parsePlatformTagName: identity,
-
-  /**
-   * Check if an attribute must be bound using property, e.g. value
-   * Platform-dependent.
-   */
-  mustUseProp: no,
-
-  /**
-   * Exposed for legacy reasons
-   */
-  _lifecycleHooks: LIFECYCLE_HOOKS
-});
-
-/*  */
-
-var emptyObject = Object.freeze({});
-
-/**
- * Check if a string starts with $ or _
- */
-function isReserved (str) {
-  var c = (str + '').charCodeAt(0);
-  return c === 0x24 || c === 0x5F
-}
-
-/**
- * Define a property.
- */
-function def (obj, key, val, enumerable) {
-  Object.defineProperty(obj, key, {
-    value: val,
-    enumerable: !!enumerable,
-    writable: true,
-    configurable: true
-  });
-}
-
-/**
- * Parse simple path.
- */
-var bailRE = /[^\w.$]/;
-function parsePath (path) {
-  if (bailRE.test(path)) {
-    return
-  }
-  var segments = path.split('.');
-  return function (obj) {
-    for (var i = 0; i < segments.length; i++) {
-      if (!obj) { return }
-      obj = obj[segments[i]];
-    }
-    return obj
-  }
-}
-
-/*  */
-
-var warn = noop;
-var tip = noop;
-var formatComponentName = (null); // work around flow check
-
-{
-  var hasConsole = typeof console !== 'undefined';
-  var classifyRE = /(?:^|[-_])(\w)/g;
-  var classify = function (str) { return str
-    .replace(classifyRE, function (c) { return c.toUpperCase(); })
-    .replace(/[-_]/g, ''); };
-
-  warn = function (msg, vm) {
-    var trace = vm ? generateComponentTrace(vm) : '';
-
-    if (config.warnHandler) {
-      config.warnHandler.call(null, msg, vm, trace);
-    } else if (hasConsole && (!config.silent)) {
-      console.error(("[Vue warn]: " + msg + trace));
-    }
-  };
-
-  tip = function (msg, vm) {
-    if (hasConsole && (!config.silent)) {
-      console.warn("[Vue tip]: " + msg + (
-        vm ? generateComponentTrace(vm) : ''
-      ));
-    }
-  };
-
-  formatComponentName = function (vm, includeFile) {
-    if (vm.$root === vm) {
-      return '<Root>'
-    }
-    var name = typeof vm === 'string'
-      ? vm
-      : typeof vm === 'function' && vm.options
-        ? vm.options.name
-        : vm._isVue
-          ? vm.$options.name || vm.$options._componentTag
-          : vm.name;
-
-    var file = vm._isVue && vm.$options.__file;
-    if (!name && file) {
-      var match = file.match(/([^/\\]+)\.vue$/);
-      name = match && match[1];
-    }
-
-    return (
-      (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
-      (file && includeFile !== false ? (" at " + file) : '')
-    )
-  };
-
-  var repeat = function (str, n) {
-    var res = '';
-    while (n) {
-      if (n % 2 === 1) { res += str; }
-      if (n > 1) { str += str; }
-      n >>= 1;
-    }
-    return res
-  };
-
-  var generateComponentTrace = function (vm) {
-    if (vm._isVue && vm.$parent) {
-      var tree = [];
-      var currentRecursiveSequence = 0;
-      while (vm) {
-        if (tree.length > 0) {
-          var last = tree[tree.length - 1];
-          if (last.constructor === vm.constructor) {
-            currentRecursiveSequence++;
-            vm = vm.$parent;
-            continue
-          } else if (currentRecursiveSequence > 0) {
-            tree[tree.length - 1] = [last, currentRecursiveSequence];
-            currentRecursiveSequence = 0;
-          }
-        }
-        tree.push(vm);
-        vm = vm.$parent;
-      }
-      return '\n\nfound in\n\n' + tree
-        .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
-            ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
-            : formatComponentName(vm))); })
-        .join('\n')
-    } else {
-      return ("\n\n(found in " + (formatComponentName(vm)) + ")")
-    }
-  };
-}
-
-/*  */
-
-function handleError (err, vm, info) {
-  if (config.errorHandler) {
-    config.errorHandler.call(null, err, vm, info);
-  } else {
-    {
-      warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
-    }
-    /* istanbul ignore else */
-    if (inBrowser && typeof console !== 'undefined') {
-      console.error(err);
-    } else {
-      throw err
-    }
-  }
-}
-
-/*  */
-/* globals MutationObserver */
-
-// can we use __proto__?
-var hasProto = '__proto__' in {};
-
-// Browser environment sniffing
-var inBrowser = typeof window !== 'undefined';
-var UA = inBrowser && window.navigator.userAgent.toLowerCase();
-var isIE = UA && /msie|trident/.test(UA);
-var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
-var isEdge = UA && UA.indexOf('edge/') > 0;
-var isAndroid = UA && UA.indexOf('android') > 0;
-var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
-var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
-
-// Firefix has a "watch" function on Object.prototype...
-var nativeWatch = ({}).watch;
-
-var supportsPassive = false;
-if (inBrowser) {
-  try {
-    var opts = {};
-    Object.defineProperty(opts, 'passive', ({
-      get: function get () {
-        /* istanbul ignore next */
-        supportsPassive = true;
-      }
-    })); // https://github.com/facebook/flow/issues/285
-    window.addEventListener('test-passive', null, opts);
-  } catch (e) {}
-}
-
-// this needs to be lazy-evaled because vue may be required before
-// vue-server-renderer can set VUE_ENV
-var _isServer;
-var isServerRendering = function () {
-  if (_isServer === undefined) {
-    /* istanbul ignore if */
-    if (!inBrowser && typeof commonjsGlobal !== 'undefined') {
-      // detect presence of vue-server-renderer and avoid
-      // Webpack shimming the process
-      _isServer = commonjsGlobal['process'].env.VUE_ENV === 'server';
-    } else {
-      _isServer = false;
-    }
-  }
-  return _isServer
-};
-
-// detect devtools
-var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
-
-/* istanbul ignore next */
-function isNative (Ctor) {
-  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
-}
-
-var hasSymbol =
-  typeof Symbol !== 'undefined' && isNative(Symbol) &&
-  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
-
-/**
- * Defer a task to execute it asynchronously.
- */
-var nextTick = (function () {
-  var callbacks = [];
-  var pending = false;
-  var timerFunc;
-
-  function nextTickHandler () {
-    pending = false;
-    var copies = callbacks.slice(0);
-    callbacks.length = 0;
-    for (var i = 0; i < copies.length; i++) {
-      copies[i]();
-    }
-  }
-
-  // the nextTick behavior leverages the microtask queue, which can be accessed
-  // via either native Promise.then or MutationObserver.
-  // MutationObserver has wider support, however it is seriously bugged in
-  // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
-  // completely stops working after triggering a few times... so, if native
-  // Promise is available, we will use it:
-  /* istanbul ignore if */
-  if (typeof Promise !== 'undefined' && isNative(Promise)) {
-    var p = Promise.resolve();
-    var logError = function (err) { console.error(err); };
-    timerFunc = function () {
-      p.then(nextTickHandler).catch(logError);
-      // in problematic UIWebViews, Promise.then doesn't completely break, but
-      // it can get stuck in a weird state where callbacks are pushed into the
-      // microtask queue but the queue isn't being flushed, until the browser
-      // needs to do some other work, e.g. handle a timer. Therefore we can
-      // "force" the microtask queue to be flushed by adding an empty timer.
-      if (isIOS) { setTimeout(noop); }
-    };
-  } else if (typeof MutationObserver !== 'undefined' && (
-    isNative(MutationObserver) ||
-    // PhantomJS and iOS 7.x
-    MutationObserver.toString() === '[object MutationObserverConstructor]'
-  )) {
-    // use MutationObserver where native Promise is not available,
-    // e.g. PhantomJS IE11, iOS7, Android 4.4
-    var counter = 1;
-    var observer = new MutationObserver(nextTickHandler);
-    var textNode = document.createTextNode(String(counter));
-    observer.observe(textNode, {
-      characterData: true
-    });
-    timerFunc = function () {
-      counter = (counter + 1) % 2;
-      textNode.data = String(counter);
-    };
-  } else {
-    // fallback to setTimeout
-    /* istanbul ignore next */
-    timerFunc = function () {
-      setTimeout(nextTickHandler, 0);
-    };
-  }
-
-  return function queueNextTick (cb, ctx) {
-    var _resolve;
-    callbacks.push(function () {
-      if (cb) {
-        try {
-          cb.call(ctx);
-        } catch (e) {
-          handleError(e, ctx, 'nextTick');
-        }
-      } else if (_resolve) {
-        _resolve(ctx);
-      }
-    });
-    if (!pending) {
-      pending = true;
-      timerFunc();
-    }
-    if (!cb && typeof Promise !== 'undefined') {
-      return new Promise(function (resolve, reject) {
-        _resolve = resolve;
-      })
-    }
-  }
-})();
-
-var _Set;
-/* istanbul ignore if */
-if (typeof Set !== 'undefined' && isNative(Set)) {
-  // use native Set when available.
-  _Set = Set;
-} else {
-  // a non-standard Set polyfill that only works with primitive keys.
-  _Set = (function () {
-    function Set () {
-      this.set = Object.create(null);
-    }
-    Set.prototype.has = function has (key) {
-      return this.set[key] === true
-    };
-    Set.prototype.add = function add (key) {
-      this.set[key] = true;
-    };
-    Set.prototype.clear = function clear () {
-      this.set = Object.create(null);
-    };
-
-    return Set;
-  }());
-}
-
-/*  */
-
-
-var uid$1 = 0;
-
-/**
- * A dep is an observable that can have multiple
- * directives subscribing to it.
- */
-var Dep = function Dep () {
-  this.id = uid$1++;
-  this.subs = [];
-};
-
-Dep.prototype.addSub = function addSub (sub) {
-  this.subs.push(sub);
-};
-
-Dep.prototype.removeSub = function removeSub (sub) {
-  remove(this.subs, sub);
-};
-
-Dep.prototype.depend = function depend () {
-  if (Dep.target) {
-    Dep.target.addDep(this);
-  }
-};
-
-Dep.prototype.notify = function notify () {
-  // stabilize the subscriber list first
-  var subs = this.subs.slice();
-  for (var i = 0, l = subs.length; i < l; i++) {
-    subs[i].update();
-  }
-};
-
-// the current target watcher being evaluated.
-// this is globally unique because there could be only one
-// watcher being evaluated at any time.
-Dep.target = null;
-var targetStack = [];
-
-function pushTarget (_target) {
-  if (Dep.target) { targetStack.push(Dep.target); }
-  Dep.target = _target;
-}
-
-function popTarget () {
-  Dep.target = targetStack.pop();
-}
-
-/*
- * not type checking this file because flow doesn't play well with
- * dynamically accessing methods on Array prototype
- */
-
-var arrayProto = Array.prototype;
-var arrayMethods = Object.create(arrayProto);[
-  'push',
-  'pop',
-  'shift',
-  'unshift',
-  'splice',
-  'sort',
-  'reverse'
-]
-.forEach(function (method) {
-  // cache original method
-  var original = arrayProto[method];
-  def(arrayMethods, method, function mutator () {
-    var arguments$1 = arguments;
-
-    var args = [], len = arguments.length;
-    while ( len-- ) { args[ len ] = arguments$1[ len ]; }
-
-    var result = original.apply(this, args);
-    var ob = this.__ob__;
-    var inserted;
-    switch (method) {
-      case 'push':
-      case 'unshift':
-        inserted = args;
-        break
-      case 'splice':
-        inserted = args.slice(2);
-        break
-    }
-    if (inserted) { ob.observeArray(inserted); }
-    // notify change
-    ob.dep.notify();
-    return result
-  });
-});
-
-/*  */
-
-var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
-
-/**
- * By default, when a reactive property is set, the new value is
- * also converted to become reactive. However when passing down props,
- * we don't want to force conversion because the value may be a nested value
- * under a frozen data structure. Converting it would defeat the optimization.
- */
-var observerState = {
-  shouldConvert: true
-};
-
-/**
- * Observer class that are attached to each observed
- * object. Once attached, the observer converts target
- * object's property keys into getter/setters that
- * collect dependencies and dispatches updates.
- */
-var Observer = function Observer (value) {
-  this.value = value;
-  this.dep = new Dep();
-  this.vmCount = 0;
-  def(value, '__ob__', this);
-  if (Array.isArray(value)) {
-    var augment = hasProto
-      ? protoAugment
-      : copyAugment;
-    augment(value, arrayMethods, arrayKeys);
-    this.observeArray(value);
-  } else {
-    this.walk(value);
-  }
-};
-
-/**
- * Walk through each property and convert them into
- * getter/setters. This method should only be called when
- * value type is Object.
- */
-Observer.prototype.walk = function walk (obj) {
-  var keys = Object.keys(obj);
-  for (var i = 0; i < keys.length; i++) {
-    defineReactive$$1(obj, keys[i], obj[keys[i]]);
-  }
-};
-
-/**
- * Observe a list of Array items.
- */
-Observer.prototype.observeArray = function observeArray (items) {
-  for (var i = 0, l = items.length; i < l; i++) {
-    observe(items[i]);
-  }
-};
-
-// helpers
-
-/**
- * Augment an target Object or Array by intercepting
- * the prototype chain using __proto__
- */
-function protoAugment (target, src, keys) {
-  /* eslint-disable no-proto */
-  target.__proto__ = src;
-  /* eslint-enable no-proto */
-}
-
-/**
- * Augment an target Object or Array by defining
- * hidden properties.
- */
-/* istanbul ignore next */
-function copyAugment (target, src, keys) {
-  for (var i = 0, l = keys.length; i < l; i++) {
-    var key = keys[i];
-    def(target, key, src[key]);
-  }
-}
-
-/**
- * Attempt to create an observer instance for a value,
- * returns the new observer if successfully observed,
- * or the existing observer if the value already has one.
- */
-function observe (value, asRootData) {
-  if (!isObject(value)) {
-    return
-  }
-  var ob;
-  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
-    ob = value.__ob__;
-  } else if (
-    observerState.shouldConvert &&
-    !isServerRendering() &&
-    (Array.isArray(value) || isPlainObject(value)) &&
-    Object.isExtensible(value) &&
-    !value._isVue
-  ) {
-    ob = new Observer(value);
-  }
-  if (asRootData && ob) {
-    ob.vmCount++;
-  }
-  return ob
-}
-
-/**
- * Define a reactive property on an Object.
- */
-function defineReactive$$1 (
-  obj,
-  key,
-  val,
-  customSetter,
-  shallow
-) {
-  var dep = new Dep();
-
-  var property = Object.getOwnPropertyDescriptor(obj, key);
-  if (property && property.configurable === false) {
-    return
-  }
-
-  // cater for pre-defined getter/setters
-  var getter = property && property.get;
-  var setter = property && property.set;
-
-  var childOb = !shallow && observe(val);
-  Object.defineProperty(obj, key, {
-    enumerable: true,
-    configurable: true,
-    get: function reactiveGetter () {
-      var value = getter ? getter.call(obj) : val;
-      if (Dep.target) {
-        dep.depend();
-        if (childOb) {
-          childOb.dep.depend();
-        }
-        if (Array.isArray(value)) {
-          dependArray(value);
-        }
-      }
-      return value
-    },
-    set: function reactiveSetter (newVal) {
-      var value = getter ? getter.call(obj) : val;
-      /* eslint-disable no-self-compare */
-      if (newVal === value || (newVal !== newVal && value !== value)) {
-        return
-      }
-      /* eslint-enable no-self-compare */
-      if ("development" !== 'production' && customSetter) {
-        customSetter();
-      }
-      if (setter) {
-        setter.call(obj, newVal);
-      } else {
-        val = newVal;
-      }
-      childOb = !shallow && observe(newVal);
-      dep.notify();
-    }
-  });
-}
-
-/**
- * Set a property on an object. Adds the new property and
- * triggers change notification if the property doesn't
- * already exist.
- */
-function set (target, key, val) {
-  if (Array.isArray(target) && isValidArrayIndex(key)) {
-    target.length = Math.max(target.length, key);
-    target.splice(key, 1, val);
-    return val
-  }
-  if (hasOwn(target, key)) {
-    target[key] = val;
-    return val
-  }
-  var ob = (target).__ob__;
-  if (target._isVue || (ob && ob.vmCount)) {
-    "development" !== 'production' && warn(
-      'Avoid adding reactive properties to a Vue instance or its root $data ' +
-      'at runtime - declare it upfront in the data option.'
-    );
-    return val
-  }
-  if (!ob) {
-    target[key] = val;
-    return val
-  }
-  defineReactive$$1(ob.value, key, val);
-  ob.dep.notify();
-  return val
-}
-
-/**
- * Delete a property and trigger change if necessary.
- */
-function del (target, key) {
-  if (Array.isArray(target) && isValidArrayIndex(key)) {
-    target.splice(key, 1);
-    return
-  }
-  var ob = (target).__ob__;
-  if (target._isVue || (ob && ob.vmCount)) {
-    "development" !== 'production' && warn(
-      'Avoid deleting properties on a Vue instance or its root $data ' +
-      '- just set it to null.'
-    );
-    return
-  }
-  if (!hasOwn(target, key)) {
-    return
-  }
-  delete target[key];
-  if (!ob) {
-    return
-  }
-  ob.dep.notify();
-}
-
-/**
- * Collect dependencies on array elements when the array is touched, since
- * we cannot intercept array element access like property getters.
- */
-function dependArray (value) {
-  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
-    e = value[i];
-    e && e.__ob__ && e.__ob__.dep.depend();
-    if (Array.isArray(e)) {
-      dependArray(e);
-    }
-  }
-}
-
-/*  */
-
-/**
- * Option overwriting strategies are functions that handle
- * how to merge a parent option value and a child option
- * value into the final value.
- */
-var strats = config.optionMergeStrategies;
-
-/**
- * Options with restrictions
- */
-{
-  strats.el = strats.propsData = function (parent, child, vm, key) {
-    if (!vm) {
-      warn(
-        "option \"" + key + "\" can only be used during instance " +
-        'creation with the `new` keyword.'
-      );
-    }
-    return defaultStrat(parent, child)
-  };
-}
-
-/**
- * Helper that recursively merges two data objects together.
- */
-function mergeData (to, from) {
-  if (!from) { return to }
-  var key, toVal, fromVal;
-  var keys = Object.keys(from);
-  for (var i = 0; i < keys.length; i++) {
-    key = keys[i];
-    toVal = to[key];
-    fromVal = from[key];
-    if (!hasOwn(to, key)) {
-      set(to, key, fromVal);
-    } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {
-      mergeData(toVal, fromVal);
-    }
-  }
-  return to
-}
-
-/**
- * Data
- */
-function mergeDataOrFn (
-  parentVal,
-  childVal,
-  vm
-) {
-  if (!vm) {
-    // in a Vue.extend merge, both should be functions
-    if (!childVal) {
-      return parentVal
-    }
-    if (!parentVal) {
-      return childVal
-    }
-    // when parentVal & childVal are both present,
-    // we need to return a function that returns the
-    // merged result of both functions... no need to
-    // check if parentVal is a function here because
-    // it has to be a function to pass previous merges.
-    return function mergedDataFn () {
-      return mergeData(
-        typeof childVal === 'function' ? childVal.call(this) : childVal,
-        typeof parentVal === 'function' ? parentVal.call(this) : parentVal
-      )
-    }
-  } else if (parentVal || childVal) {
-    return function mergedInstanceDataFn () {
-      // instance merge
-      var instanceData = typeof childVal === 'function'
-        ? childVal.call(vm)
-        : childVal;
-      var defaultData = typeof parentVal === 'function'
-        ? parentVal.call(vm)
-        : undefined;
-      if (instanceData) {
-        return mergeData(instanceData, defaultData)
-      } else {
-        return defaultData
-      }
-    }
-  }
-}
-
-strats.data = function (
-  parentVal,
-  childVal,
-  vm
-) {
-  if (!vm) {
-    if (childVal && typeof childVal !== 'function') {
-      "development" !== 'production' && warn(
-        'The "data" option should be a function ' +
-        'that returns a per-instance value in component ' +
-        'definitions.',
-        vm
-      );
-
-      return parentVal
-    }
-    return mergeDataOrFn.call(this, parentVal, childVal)
-  }
-
-  return mergeDataOrFn(parentVal, childVal, vm)
-};
-
-/**
- * Hooks and props are merged as arrays.
- */
-function mergeHook (
-  parentVal,
-  childVal
-) {
-  return childVal
-    ? parentVal
-      ? parentVal.concat(childVal)
-      : Array.isArray(childVal)
-        ? childVal
-        : [childVal]
-    : parentVal
-}
-
-LIFECYCLE_HOOKS.forEach(function (hook) {
-  strats[hook] = mergeHook;
-});
-
-/**
- * Assets
- *
- * When a vm is present (instance creation), we need to do
- * a three-way merge between constructor options, instance
- * options and parent options.
- */
-function mergeAssets (parentVal, childVal) {
-  var res = Object.create(parentVal || null);
-  return childVal
-    ? extend(res, childVal)
-    : res
-}
-
-ASSET_TYPES.forEach(function (type) {
-  strats[type + 's'] = mergeAssets;
-});
-
-/**
- * Watchers.
- *
- * Watchers hashes should not overwrite one
- * another, so we merge them as arrays.
- */
-strats.watch = function (parentVal, childVal) {
-  // work around Firefox's Object.prototype.watch...
-  if (parentVal === nativeWatch) { parentVal = undefined; }
-  if (childVal === nativeWatch) { childVal = undefined; }
-  /* istanbul ignore if */
-  if (!childVal) { return Object.create(parentVal || null) }
-  if (!parentVal) { return childVal }
-  var ret = {};
-  extend(ret, parentVal);
-  for (var key in childVal) {
-    var parent = ret[key];
-    var child = childVal[key];
-    if (parent && !Array.isArray(parent)) {
-      parent = [parent];
-    }
-    ret[key] = parent
-      ? parent.concat(child)
-      : Array.isArray(child) ? child : [child];
-  }
-  return ret
-};
-
-/**
- * Other object hashes.
- */
-strats.props =
-strats.methods =
-strats.inject =
-strats.computed = function (parentVal, childVal) {
-  if (!parentVal) { return childVal }
-  var ret = Object.create(null);
-  extend(ret, parentVal);
-  if (childVal) { extend(ret, childVal); }
-  return ret
-};
-strats.provide = mergeDataOrFn;
-
-/**
- * Default strategy.
- */
-var defaultStrat = function (parentVal, childVal) {
-  return childVal === undefined
-    ? parentVal
-    : childVal
-};
-
-/**
- * Validate component names
- */
-function checkComponents (options) {
-  for (var key in options.components) {
-    var lower = key.toLowerCase();
-    if (isBuiltInTag(lower) || config.isReservedTag(lower)) {
-      warn(
-        'Do not use built-in or reserved HTML elements as component ' +
-        'id: ' + key
-      );
-    }
-  }
-}
-
-/**
- * Ensure all props option syntax are normalized into the
- * Object-based format.
- */
-function normalizeProps (options) {
-  var props = options.props;
-  if (!props) { return }
-  var res = {};
-  var i, val, name;
-  if (Array.isArray(props)) {
-    i = props.length;
-    while (i--) {
-      val = props[i];
-      if (typeof val === 'string') {
-        name = camelize(val);
-        res[name] = { type: null };
-      } else {
-        warn('props must be strings when using array syntax.');
-      }
-    }
-  } else if (isPlainObject(props)) {
-    for (var key in props) {
-      val = props[key];
-      name = camelize(key);
-      res[name] = isPlainObject(val)
-        ? val
-        : { type: val };
-    }
-  }
-  options.props = res;
-}
-
-/**
- * Normalize all injections into Object-based format
- */
-function normalizeInject (options) {
-  var inject = options.inject;
-  if (Array.isArray(inject)) {
-    var normalized = options.inject = {};
-    for (var i = 0; i < inject.length; i++) {
-      normalized[inject[i]] = inject[i];
-    }
-  }
-}
-
-/**
- * Normalize raw function directives into object format.
- */
-function normalizeDirectives (options) {
-  var dirs = options.directives;
-  if (dirs) {
-    for (var key in dirs) {
-      var def = dirs[key];
-      if (typeof def === 'function') {
-        dirs[key] = { bind: def, update: def };
-      }
-    }
-  }
-}
-
-/**
- * Merge two option objects into a new one.
- * Core utility used in both instantiation and inheritance.
- */
-function mergeOptions (
-  parent,
-  child,
-  vm
-) {
-  {
-    checkComponents(child);
-  }
-
-  if (typeof child === 'function') {
-    child = child.options;
-  }
-
-  normalizeProps(child);
-  normalizeInject(child);
-  normalizeDirectives(child);
-  var extendsFrom = child.extends;
-  if (extendsFrom) {
-    parent = mergeOptions(parent, extendsFrom, vm);
-  }
-  if (child.mixins) {
-    for (var i = 0, l = child.mixins.length; i < l; i++) {
-      parent = mergeOptions(parent, child.mixins[i], vm);
-    }
-  }
-  var options = {};
-  var key;
-  for (key in parent) {
-    mergeField(key);
-  }
-  for (key in child) {
-    if (!hasOwn(parent, key)) {
-      mergeField(key);
-    }
-  }
-  function mergeField (key) {
-    var strat = strats[key] || defaultStrat;
-    options[key] = strat(parent[key], child[key], vm, key);
-  }
-  return options
-}
-
-/**
- * Resolve an asset.
- * This function is used because child instances need access
- * to assets defined in its ancestor chain.
- */
-function resolveAsset (
-  options,
-  type,
-  id,
-  warnMissing
-) {
-  /* istanbul ignore if */
-  if (typeof id !== 'string') {
-    return
-  }
-  var assets = options[type];
-  // check local registration variations first
-  if (hasOwn(assets, id)) { return assets[id] }
-  var camelizedId = camelize(id);
-  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
-  var PascalCaseId = capitalize(camelizedId);
-  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
-  // fallback to prototype chain
-  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
-  if ("development" !== 'production' && warnMissing && !res) {
-    warn(
-      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
-      options
-    );
-  }
-  return res
-}
-
-/*  */
-
-function validateProp (
-  key,
-  propOptions,
-  propsData,
-  vm
-) {
-  var prop = propOptions[key];
-  var absent = !hasOwn(propsData, key);
-  var value = propsData[key];
-  // handle boolean props
-  if (isType(Boolean, prop.type)) {
-    if (absent && !hasOwn(prop, 'default')) {
-      value = false;
-    } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {
-      value = true;
-    }
-  }
-  // check default value
-  if (value === undefined) {
-    value = getPropDefaultValue(vm, prop, key);
-    // since the default value is a fresh copy,
-    // make sure to observe it.
-    var prevShouldConvert = observerState.shouldConvert;
-    observerState.shouldConvert = true;
-    observe(value);
-    observerState.shouldConvert = prevShouldConvert;
-  }
-  {
-    assertProp(prop, key, value, vm, absent);
-  }
-  return value
-}
-
-/**
- * Get the default value of a prop.
- */
-function getPropDefaultValue (vm, prop, key) {
-  // no default, return undefined
-  if (!hasOwn(prop, 'default')) {
-    return undefined
-  }
-  var def = prop.default;
-  // warn against non-factory defaults for Object & Array
-  if ("development" !== 'production' && isObject(def)) {
-    warn(
-      'Invalid default value for prop "' + key + '": ' +
-      'Props with type Object/Array must use a factory function ' +
-      'to return the default value.',
-      vm
-    );
-  }
-  // the raw prop value was also undefined from previous render,
-  // return previous default value to avoid unnecessary watcher trigger
-  if (vm && vm.$options.propsData &&
-    vm.$options.propsData[key] === undefined &&
-    vm._props[key] !== undefined
-  ) {
-    return vm._props[key]
-  }
-  // call factory function for non-Function types
-  // a value is Function if its prototype is function even across different execution context
-  return typeof def === 'function' && getType(prop.type) !== 'Function'
-    ? def.call(vm)
-    : def
-}
-
-/**
- * Assert whether a prop is valid.
- */
-function assertProp (
-  prop,
-  name,
-  value,
-  vm,
-  absent
-) {
-  if (prop.required && absent) {
-    warn(
-      'Missing required prop: "' + name + '"',
-      vm
-    );
-    return
-  }
-  if (value == null && !prop.required) {
-    return
-  }
-  var type = prop.type;
-  var valid = !type || type === true;
-  var expectedTypes = [];
-  if (type) {
-    if (!Array.isArray(type)) {
-      type = [type];
-    }
-    for (var i = 0; i < type.length && !valid; i++) {
-      var assertedType = assertType(value, type[i]);
-      expectedTypes.push(assertedType.expectedType || '');
-      valid = assertedType.valid;
-    }
-  }
-  if (!valid) {
-    warn(
-      'Invalid prop: type check failed for prop "' + name + '".' +
-      ' Expected ' + expectedTypes.map(capitalize).join(', ') +
-      ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',
-      vm
-    );
-    return
-  }
-  var validator = prop.validator;
-  if (validator) {
-    if (!validator(value)) {
-      warn(
-        'Invalid prop: custom validator check failed for prop "' + name + '".',
-        vm
-      );
-    }
-  }
-}
-
-var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
-
-function assertType (value, type) {
-  var valid;
-  var expectedType = getType(type);
-  if (simpleCheckRE.test(expectedType)) {
-    valid = typeof value === expectedType.toLowerCase();
-  } else if (expectedType === 'Object') {
-    valid = isPlainObject(value);
-  } else if (expectedType === 'Array') {
-    valid = Array.isArray(value);
-  } else {
-    valid = value instanceof type;
-  }
-  return {
-    valid: valid,
-    expectedType: expectedType
-  }
-}
-
-/**
- * Use function string name to check built-in types,
- * because a simple equality check will fail when running
- * across different vms / iframes.
- */
-function getType (fn) {
-  var match = fn && fn.toString().match(/^\s*function (\w+)/);
-  return match ? match[1] : ''
-}
-
-function isType (type, fn) {
-  if (!Array.isArray(fn)) {
-    return getType(fn) === getType(type)
-  }
-  for (var i = 0, len = fn.length; i < len; i++) {
-    if (getType(fn[i]) === getType(type)) {
-      return true
-    }
-  }
-  /* istanbul ignore next */
-  return false
-}
-
-/*  */
-
-/* not type checking this file because flow doesn't play well with Proxy */
-
-var initProxy;
-
-{
-  var allowedGlobals = makeMap(
-    'Infinity,undefined,NaN,isFinite,isNaN,' +
-    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
-    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
-    'require' // for Webpack/Browserify
-  );
-
-  var warnNonPresent = function (target, key) {
-    warn(
-      "Property or method \"" + key + "\" is not defined on the instance but " +
-      "referenced during render. Make sure to declare reactive data " +
-      "properties in the data option.",
-      target
-    );
-  };
-
-  var hasProxy =
-    typeof Proxy !== 'undefined' &&
-    Proxy.toString().match(/native code/);
-
-  if (hasProxy) {
-    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta');
-    config.keyCodes = new Proxy(config.keyCodes, {
-      set: function set (target, key, value) {
-        if (isBuiltInModifier(key)) {
-          warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
-          return false
-        } else {
-          target[key] = value;
-          return true
-        }
-      }
-    });
-  }
-
-  var hasHandler = {
-    has: function has (target, key) {
-      var has = key in target;
-      var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
-      if (!has && !isAllowed) {
-        warnNonPresent(target, key);
-      }
-      return has || !isAllowed
-    }
-  };
-
-  var getHandler = {
-    get: function get (target, key) {
-      if (typeof key === 'string' && !(key in target)) {
-        warnNonPresent(target, key);
-      }
-      return target[key]
-    }
-  };
-
-  initProxy = function initProxy (vm) {
-    if (hasProxy) {
-      // determine which proxy handler to use
-      var options = vm.$options;
-      var handlers = options.render && options.render._withStripped
-        ? getHandler
-        : hasHandler;
-      vm._renderProxy = new Proxy(vm, handlers);
-    } else {
-      vm._renderProxy = vm;
-    }
-  };
-}
-
-var mark;
-var measure;
-
-{
-  var perf = inBrowser && window.performance;
-  /* istanbul ignore if */
-  if (
-    perf &&
-    perf.mark &&
-    perf.measure &&
-    perf.clearMarks &&
-    perf.clearMeasures
-  ) {
-    mark = function (tag) { return perf.mark(tag); };
-    measure = function (name, startTag, endTag) {
-      perf.measure(name, startTag, endTag);
-      perf.clearMarks(startTag);
-      perf.clearMarks(endTag);
-      perf.clearMeasures(name);
-    };
-  }
-}
-
-/*  */
-
-var VNode = function VNode (
-  tag,
-  data,
-  children,
-  text,
-  elm,
-  context,
-  componentOptions,
-  asyncFactory
-) {
-  this.tag = tag;
-  this.data = data;
-  this.children = children;
-  this.text = text;
-  this.elm = elm;
-  this.ns = undefined;
-  this.context = context;
-  this.functionalContext = undefined;
-  this.key = data && data.key;
-  this.componentOptions = componentOptions;
-  this.componentInstance = undefined;
-  this.parent = undefined;
-  this.raw = false;
-  this.isStatic = false;
-  this.isRootInsert = true;
-  this.isComment = false;
-  this.isCloned = false;
-  this.isOnce = false;
-  this.asyncFactory = asyncFactory;
-  this.asyncMeta = undefined;
-  this.isAsyncPlaceholder = false;
-};
-
-var prototypeAccessors = { child: {} };
-
-// DEPRECATED: alias for componentInstance for backwards compat.
-/* istanbul ignore next */
-prototypeAccessors.child.get = function () {
-  return this.componentInstance
-};
-
-Object.defineProperties( VNode.prototype, prototypeAccessors );
-
-var createEmptyVNode = function (text) {
-  if ( text === void 0 ) { text = ''; }
-
-  var node = new VNode();
-  node.text = text;
-  node.isComment = true;
-  return node
-};
-
-function createTextVNode (val) {
-  return new VNode(undefined, undefined, undefined, String(val))
-}
-
-// optimized shallow clone
-// used for static nodes and slot nodes because they may be reused across
-// multiple renders, cloning them avoids errors when DOM manipulations rely
-// on their elm reference.
-function cloneVNode (vnode) {
-  var cloned = new VNode(
-    vnode.tag,
-    vnode.data,
-    vnode.children,
-    vnode.text,
-    vnode.elm,
-    vnode.context,
-    vnode.componentOptions,
-    vnode.asyncFactory
-  );
-  cloned.ns = vnode.ns;
-  cloned.isStatic = vnode.isStatic;
-  cloned.key = vnode.key;
-  cloned.isComment = vnode.isComment;
-  cloned.isCloned = true;
-  return cloned
-}
-
-function cloneVNodes (vnodes) {
-  var len = vnodes.length;
-  var res = new Array(len);
-  for (var i = 0; i < len; i++) {
-    res[i] = cloneVNode(vnodes[i]);
-  }
-  return res
-}
-
-/*  */
-
-var normalizeEvent = cached(function (name) {
-  var passive = name.charAt(0) === '&';
-  name = passive ? name.slice(1) : name;
-  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
-  name = once$$1 ? name.slice(1) : name;
-  var capture = name.charAt(0) === '!';
-  name = capture ? name.slice(1) : name;
-  return {
-    name: name,
-    once: once$$1,
-    capture: capture,
-    passive: passive
-  }
-});
-
-function createFnInvoker (fns) {
-  function invoker () {
-    var arguments$1 = arguments;
-
-    var fns = invoker.fns;
-    if (Array.isArray(fns)) {
-      var cloned = fns.slice();
-      for (var i = 0; i < cloned.length; i++) {
-        cloned[i].apply(null, arguments$1);
-      }
-    } else {
-      // return handler return value for single handlers
-      return fns.apply(null, arguments)
-    }
-  }
-  invoker.fns = fns;
-  return invoker
-}
-
-function updateListeners (
-  on,
-  oldOn,
-  add,
-  remove$$1,
-  vm
-) {
-  var name, cur, old, event;
-  for (name in on) {
-    cur = on[name];
-    old = oldOn[name];
-    event = normalizeEvent(name);
-    if (isUndef(cur)) {
-      "development" !== 'production' && warn(
-        "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
-        vm
-      );
-    } else if (isUndef(old)) {
-      if (isUndef(cur.fns)) {
-        cur = on[name] = createFnInvoker(cur);
-      }
-      add(event.name, cur, event.once, event.capture, event.passive);
-    } else if (cur !== old) {
-      old.fns = cur;
-      on[name] = old;
-    }
-  }
-  for (name in oldOn) {
-    if (isUndef(on[name])) {
-      event = normalizeEvent(name);
-      remove$$1(event.name, oldOn[name], event.capture);
-    }
-  }
-}
-
-/*  */
-
-function mergeVNodeHook (def, hookKey, hook) {
-  var invoker;
-  var oldHook = def[hookKey];
-
-  function wrappedHook () {
-    hook.apply(this, arguments);
-    // important: remove merged hook to ensure it's called only once
-    // and prevent memory leak
-    remove(invoker.fns, wrappedHook);
-  }
-
-  if (isUndef(oldHook)) {
-    // no existing hook
-    invoker = createFnInvoker([wrappedHook]);
-  } else {
-    /* istanbul ignore if */
-    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
-      // already a merged invoker
-      invoker = oldHook;
-      invoker.fns.push(wrappedHook);
-    } else {
-      // existing plain hook
-      invoker = createFnInvoker([oldHook, wrappedHook]);
-    }
-  }
-
-  invoker.merged = true;
-  def[hookKey] = invoker;
-}
-
-/*  */
-
-function extractPropsFromVNodeData (
-  data,
-  Ctor,
-  tag
-) {
-  // we are only extracting raw values here.
-  // validation and default values are handled in the child
-  // component itself.
-  var propOptions = Ctor.options.props;
-  if (isUndef(propOptions)) {
-    return
-  }
-  var res = {};
-  var attrs = data.attrs;
-  var props = data.props;
-  if (isDef(attrs) || isDef(props)) {
-    for (var key in propOptions) {
-      var altKey = hyphenate(key);
-      {
-        var keyInLowerCase = key.toLowerCase();
-        if (
-          key !== keyInLowerCase &&
-          attrs && hasOwn(attrs, keyInLowerCase)
-        ) {
-          tip(
-            "Prop \"" + keyInLowerCase + "\" is passed to component " +
-            (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
-            " \"" + key + "\". " +
-            "Note that HTML attributes are case-insensitive and camelCased " +
-            "props need to use their kebab-case equivalents when using in-DOM " +
-            "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
-          );
-        }
-      }
-      checkProp(res, props, key, altKey, true) ||
-      checkProp(res, attrs, key, altKey, false);
-    }
-  }
-  return res
-}
-
-function checkProp (
-  res,
-  hash,
-  key,
-  altKey,
-  preserve
-) {
-  if (isDef(hash)) {
-    if (hasOwn(hash, key)) {
-      res[key] = hash[key];
-      if (!preserve) {
-        delete hash[key];
-      }
-      return true
-    } else if (hasOwn(hash, altKey)) {
-      res[key] = hash[altKey];
-      if (!preserve) {
-        delete hash[altKey];
-      }
-      return true
-    }
-  }
-  return false
-}
-
-/*  */
-
-// The template compiler attempts to minimize the need for normalization by
-// statically analyzing the template at compile time.
-//
-// For plain HTML markup, normalization can be completely skipped because the
-// generated render function is guaranteed to return Array<VNode>. There are
-// two cases where extra normalization is needed:
-
-// 1. When the children contains components - because a functional component
-// may return an Array instead of a single root. In this case, just a simple
-// normalization is needed - if any child is an Array, we flatten the whole
-// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
-// because functional components already normalize their own children.
-function simpleNormalizeChildren (children) {
-  for (var i = 0; i < children.length; i++) {
-    if (Array.isArray(children[i])) {
-      return Array.prototype.concat.apply([], children)
-    }
-  }
-  return children
-}
-
-// 2. When the children contains constructs that always generated nested Arrays,
-// e.g. <template>, <slot>, v-for, or when the children is provided by user
-// with hand-written render functions / JSX. In such cases a full normalization
-// is needed to cater to all possible types of children values.
-function normalizeChildren (children) {
-  return isPrimitive(children)
-    ? [createTextVNode(children)]
-    : Array.isArray(children)
-      ? normalizeArrayChildren(children)
-      : undefined
-}
-
-function isTextNode (node) {
-  return isDef(node) && isDef(node.text) && isFalse(node.isComment)
-}
-
-function normalizeArrayChildren (children, nestedIndex) {
-  var res = [];
-  var i, c, last;
-  for (i = 0; i < children.length; i++) {
-    c = children[i];
-    if (isUndef(c) || typeof c === 'boolean') { continue }
-    last = res[res.length - 1];
-    //  nested
-    if (Array.isArray(c)) {
-      res.push.apply(res, normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i)));
-    } else if (isPrimitive(c)) {
-      if (isTextNode(last)) {
-        // merge adjacent text nodes
-        // this is necessary for SSR hydration because text nodes are
-        // essentially merged when rendered to HTML strings
-        (last).text += String(c);
-      } else if (c !== '') {
-        // convert primitive to vnode
-        res.push(createTextVNode(c));
-      }
-    } else {
-      if (isTextNode(c) && isTextNode(last)) {
-        // merge adjacent text nodes
-        res[res.length - 1] = createTextVNode(last.text + c.text);
-      } else {
-        // default key for nested array children (likely generated by v-for)
-        if (isTrue(children._isVList) &&
-          isDef(c.tag) &&
-          isUndef(c.key) &&
-          isDef(nestedIndex)) {
-          c.key = "__vlist" + nestedIndex + "_" + i + "__";
-        }
-        res.push(c);
-      }
-    }
-  }
-  return res
-}
-
-/*  */
-
-function ensureCtor (comp, base) {
-  if (comp.__esModule && comp.default) {
-    comp = comp.default;
-  }
-  return isObject(comp)
-    ? base.extend(comp)
-    : comp
-}
-
-function createAsyncPlaceholder (
-  factory,
-  data,
-  context,
-  children,
-  tag
-) {
-  var node = createEmptyVNode();
-  node.asyncFactory = factory;
-  node.asyncMeta = { data: data, context: context, children: children, tag: tag };
-  return node
-}
-
-function resolveAsyncComponent (
-  factory,
-  baseCtor,
-  context
-) {
-  if (isTrue(factory.error) && isDef(factory.errorComp)) {
-    return factory.errorComp
-  }
-
-  if (isDef(factory.resolved)) {
-    return factory.resolved
-  }
-
-  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
-    return factory.loadingComp
-  }
-
-  if (isDef(factory.contexts)) {
-    // already pending
-    factory.contexts.push(context);
-  } else {
-    var contexts = factory.contexts = [context];
-    var sync = true;
-
-    var forceRender = function () {
-      for (var i = 0, l = contexts.length; i < l; i++) {
-        contexts[i].$forceUpdate();
-      }
-    };
-
-    var resolve = once(function (res) {
-      // cache resolved
-      factory.resolved = ensureCtor(res, baseCtor);
-      // invoke callbacks only if this is not a synchronous resolve
-      // (async resolves are shimmed as synchronous during SSR)
-      if (!sync) {
-        forceRender();
-      }
-    });
-
-    var reject = once(function (reason) {
-      "development" !== 'production' && warn(
-        "Failed to resolve async component: " + (String(factory)) +
-        (reason ? ("\nReason: " + reason) : '')
-      );
-      if (isDef(factory.errorComp)) {
-        factory.error = true;
-        forceRender();
-      }
-    });
-
-    var res = factory(resolve, reject);
-
-    if (isObject(res)) {
-      if (typeof res.then === 'function') {
-        // () => Promise
-        if (isUndef(factory.resolved)) {
-          res.then(resolve, reject);
-        }
-      } else if (isDef(res.component) && typeof res.component.then === 'function') {
-        res.component.then(resolve, reject);
-
-        if (isDef(res.error)) {
-          factory.errorComp = ensureCtor(res.error, baseCtor);
-        }
-
-        if (isDef(res.loading)) {
-          factory.loadingComp = ensureCtor(res.loading, baseCtor);
-          if (res.delay === 0) {
-            factory.loading = true;
-          } else {
-            setTimeout(function () {
-              if (isUndef(factory.resolved) && isUndef(factory.error)) {
-                factory.loading = true;
-                forceRender();
-              }
-            }, res.delay || 200);
-          }
-        }
-
-        if (isDef(res.timeout)) {
-          setTimeout(function () {
-            if (isUndef(factory.resolved)) {
-              reject(
-                ("timeout (" + (res.timeout) + "ms)")
-              );
-            }
-          }, res.timeout);
-        }
-      }
-    }
-
-    sync = false;
-    // return in case resolved synchronously
-    return factory.loading
-      ? factory.loadingComp
-      : factory.resolved
-  }
-}
-
-/*  */
-
-function getFirstComponentChild (children) {
-  if (Array.isArray(children)) {
-    for (var i = 0; i < children.length; i++) {
-      var c = children[i];
-      if (isDef(c) && isDef(c.componentOptions)) {
-        return c
-      }
-    }
-  }
-}
-
-/*  */
-
-/*  */
-
-function initEvents (vm) {
-  vm._events = Object.create(null);
-  vm._hasHookEvent = false;
-  // init parent attached events
-  var listeners = vm.$options._parentListeners;
-  if (listeners) {
-    updateComponentListeners(vm, listeners);
-  }
-}
-
-var target;
-
-function add (event, fn, once$$1) {
-  if (once$$1) {
-    target.$once(event, fn);
-  } else {
-    target.$on(event, fn);
-  }
-}
-
-function remove$1 (event, fn) {
-  target.$off(event, fn);
-}
-
-function updateComponentListeners (
-  vm,
-  listeners,
-  oldListeners
-) {
-  target = vm;
-  updateListeners(listeners, oldListeners || {}, add, remove$1, vm);
-}
-
-function eventsMixin (Vue) {
-  var hookRE = /^hook:/;
-  Vue.prototype.$on = function (event, fn) {
-    var this$1 = this;
-
-    var vm = this;
-    if (Array.isArray(event)) {
-      for (var i = 0, l = event.length; i < l; i++) {
-        this$1.$on(event[i], fn);
-      }
-    } else {
-      (vm._events[event] || (vm._events[event] = [])).push(fn);
-      // optimize hook:event cost by using a boolean flag marked at registration
-      // instead of a hash lookup
-      if (hookRE.test(event)) {
-        vm._hasHookEvent = true;
-      }
-    }
-    return vm
-  };
-
-  Vue.prototype.$once = function (event, fn) {
-    var vm = this;
-    function on () {
-      vm.$off(event, on);
-      fn.apply(vm, arguments);
-    }
-    on.fn = fn;
-    vm.$on(event, on);
-    return vm
-  };
-
-  Vue.prototype.$off = function (event, fn) {
-    var this$1 = this;
-
-    var vm = this;
-    // all
-    if (!arguments.length) {
-      vm._events = Object.create(null);
-      return vm
-    }
-    // array of events
-    if (Array.isArray(event)) {
-      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
-        this$1.$off(event[i$1], fn);
-      }
-      return vm
-    }
-    // specific event
-    var cbs = vm._events[event];
-    if (!cbs) {
-      return vm
-    }
-    if (arguments.length === 1) {
-      vm._events[event] = null;
-      return vm
-    }
-    // specific handler
-    var cb;
-    var i = cbs.length;
-    while (i--) {
-      cb = cbs[i];
-      if (cb === fn || cb.fn === fn) {
-        cbs.splice(i, 1);
-        break
-      }
-    }
-    return vm
-  };
-
-  Vue.prototype.$emit = function (event) {
-    var vm = this;
-    {
-      var lowerCaseEvent = event.toLowerCase();
-      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
-        tip(
-          "Event \"" + lowerCaseEvent + "\" is emitted in component " +
-          (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
-          "Note that HTML attributes are case-insensitive and you cannot use " +
-          "v-on to listen to camelCase events when using in-DOM templates. " +
-          "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
-        );
-      }
-    }
-    var cbs = vm._events[event];
-    if (cbs) {
-      cbs = cbs.length > 1 ? toArray(cbs) : cbs;
-      var args = toArray(arguments, 1);
-      for (var i = 0, l = cbs.length; i < l; i++) {
-        try {
-          cbs[i].apply(vm, args);
-        } catch (e) {
-          handleError(e, vm, ("event handler for \"" + event + "\""));
-        }
-      }
-    }
-    return vm
-  };
-}
-
-/*  */
-
-/**
- * Runtime helper for resolving raw children VNodes into a slot object.
- */
-function resolveSlots (
-  children,
-  context
-) {
-  var slots = {};
-  if (!children) {
-    return slots
-  }
-  var defaultSlot = [];
-  for (var i = 0, l = children.length; i < l; i++) {
-    var child = children[i];
-    // named slots should only be respected if the vnode was rendered in the
-    // same context.
-    if ((child.context === context || child.functionalContext === context) &&
-      child.data && child.data.slot != null
-    ) {
-      var name = child.data.slot;
-      var slot = (slots[name] || (slots[name] = []));
-      if (child.tag === 'template') {
-        slot.push.apply(slot, child.children);
-      } else {
-        slot.push(child);
-      }
-    } else {
-      defaultSlot.push(child);
-    }
-  }
-  // ignore whitespace
-  if (!defaultSlot.every(isWhitespace)) {
-    slots.default = defaultSlot;
-  }
-  return slots
-}
-
-function isWhitespace (node) {
-  return node.isComment || node.text === ' '
-}
-
-function resolveScopedSlots (
-  fns, // see flow/vnode
-  res
-) {
-  res = res || {};
-  for (var i = 0; i < fns.length; i++) {
-    if (Array.isArray(fns[i])) {
-      resolveScopedSlots(fns[i], res);
-    } else {
-      res[fns[i].key] = fns[i].fn;
-    }
-  }
-  return res
-}
-
-/*  */
-
-var activeInstance = null;
-var isUpdatingChildComponent = false;
-
-function initLifecycle (vm) {
-  var options = vm.$options;
-
-  // locate first non-abstract parent
-  var parent = options.parent;
-  if (parent && !options.abstract) {
-    while (parent.$options.abstract && parent.$parent) {
-      parent = parent.$parent;
-    }
-    parent.$children.push(vm);
-  }
-
-  vm.$parent = parent;
-  vm.$root = parent ? parent.$root : vm;
-
-  vm.$children = [];
-  vm.$refs = {};
-
-  vm._watcher = null;
-  vm._inactive = null;
-  vm._directInactive = false;
-  vm._isMounted = false;
-  vm._isDestroyed = false;
-  vm._isBeingDestroyed = false;
-}
-
-function lifecycleMixin (Vue) {
-  Vue.prototype._update = function (vnode, hydrating) {
-    var vm = this;
-    if (vm._isMounted) {
-      callHook(vm, 'beforeUpdate');
-    }
-    var prevEl = vm.$el;
-    var prevVnode = vm._vnode;
-    var prevActiveInstance = activeInstance;
-    activeInstance = vm;
-    vm._vnode = vnode;
-    // Vue.prototype.__patch__ is injected in entry points
-    // based on the rendering backend used.
-    if (!prevVnode) {
-      // initial render
-      vm.$el = vm.__patch__(
-        vm.$el, vnode, hydrating, false /* removeOnly */,
-        vm.$options._parentElm,
-        vm.$options._refElm
-      );
-      // no need for the ref nodes after initial patch
-      // this prevents keeping a detached DOM tree in memory (#5851)
-      vm.$options._parentElm = vm.$options._refElm = null;
-    } else {
-      // updates
-      vm.$el = vm.__patch__(prevVnode, vnode);
-    }
-    activeInstance = prevActiveInstance;
-    // update __vue__ reference
-    if (prevEl) {
-      prevEl.__vue__ = null;
-    }
-    if (vm.$el) {
-      vm.$el.__vue__ = vm;
-    }
-    // if parent is an HOC, update its $el as well
-    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
-      vm.$parent.$el = vm.$el;
-    }
-    // updated hook is called by the scheduler to ensure that children are
-    // updated in a parent's updated hook.
-  };
-
-  Vue.prototype.$forceUpdate = function () {
-    var vm = this;
-    if (vm._watcher) {
-      vm._watcher.update();
-    }
-  };
-
-  Vue.prototype.$destroy = function () {
-    var vm = this;
-    if (vm._isBeingDestroyed) {
-      return
-    }
-    callHook(vm, 'beforeDestroy');
-    vm._isBeingDestroyed = true;
-    // remove self from parent
-    var parent = vm.$parent;
-    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
-      remove(parent.$children, vm);
-    }
-    // teardown watchers
-    if (vm._watcher) {
-      vm._watcher.teardown();
-    }
-    var i = vm._watchers.length;
-    while (i--) {
-      vm._watchers[i].teardown();
-    }
-    // remove reference from data ob
-    // frozen object may not have observer.
-    if (vm._data.__ob__) {
-      vm._data.__ob__.vmCount--;
-    }
-    // call the last hook...
-    vm._isDestroyed = true;
-    // invoke destroy hooks on current rendered tree
-    vm.__patch__(vm._vnode, null);
-    // fire destroyed hook
-    callHook(vm, 'destroyed');
-    // turn off all instance listeners.
-    vm.$off();
-    // remove __vue__ reference
-    if (vm.$el) {
-      vm.$el.__vue__ = null;
-    }
-  };
-}
-
-function mountComponent (
-  vm,
-  el,
-  hydrating
-) {
-  vm.$el = el;
-  if (!vm.$options.render) {
-    vm.$options.render = createEmptyVNode;
-    {
-      /* istanbul ignore if */
-      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
-        vm.$options.el || el) {
-        warn(
-          'You are using the runtime-only build of Vue where the template ' +
-          'compiler is not available. Either pre-compile the templates into ' +
-          'render functions, or use the compiler-included build.',
-          vm
-        );
-      } else {
-        warn(
-          'Failed to mount component: template or render function not defined.',
-          vm
-        );
-      }
-    }
-  }
-  callHook(vm, 'beforeMount');
-
-  var updateComponent;
-  /* istanbul ignore if */
-  if ("development" !== 'production' && config.performance && mark) {
-    updateComponent = function () {
-      var name = vm._name;
-      var id = vm._uid;
-      var startTag = "vue-perf-start:" + id;
-      var endTag = "vue-perf-end:" + id;
-
-      mark(startTag);
-      var vnode = vm._render();
-      mark(endTag);
-      measure((name + " render"), startTag, endTag);
-
-      mark(startTag);
-      vm._update(vnode, hydrating);
-      mark(endTag);
-      measure((name + " patch"), startTag, endTag);
-    };
-  } else {
-    updateComponent = function () {
-      vm._update(vm._render(), hydrating);
-    };
-  }
-
-  vm._watcher = new Watcher(vm, updateComponent, noop);
-  hydrating = false;
-
-  // manually mounted instance, call mounted on self
-  // mounted is called for render-created child components in its inserted hook
-  if (vm.$vnode == null) {
-    vm._isMounted = true;
-    callHook(vm, 'mounted');
-  }
-  return vm
-}
-
-function updateChildComponent (
-  vm,
-  propsData,
-  listeners,
-  parentVnode,
-  renderChildren
-) {
-  {
-    isUpdatingChildComponent = true;
-  }
-
-  // determine whether component has slot children
-  // we need to do this before overwriting $options._renderChildren
-  var hasChildren = !!(
-    renderChildren ||               // has new static slots
-    vm.$options._renderChildren ||  // has old static slots
-    parentVnode.data.scopedSlots || // has new scoped slots
-    vm.$scopedSlots !== emptyObject // has old scoped slots
-  );
-
-  vm.$options._parentVnode = parentVnode;
-  vm.$vnode = parentVnode; // update vm's placeholder node without re-render
-
-  if (vm._vnode) { // update child tree's parent
-    vm._vnode.parent = parentVnode;
-  }
-  vm.$options._renderChildren = renderChildren;
-
-  // update $attrs and $listensers hash
-  // these are also reactive so they may trigger child update if the child
-  // used them during render
-  vm.$attrs = parentVnode.data && parentVnode.data.attrs;
-  vm.$listeners = listeners;
-
-  // update props
-  if (propsData && vm.$options.props) {
-    observerState.shouldConvert = false;
-    var props = vm._props;
-    var propKeys = vm.$options._propKeys || [];
-    for (var i = 0; i < propKeys.length; i++) {
-      var key = propKeys[i];
-      props[key] = validateProp(key, vm.$options.props, propsData, vm);
-    }
-    observerState.shouldConvert = true;
-    // keep a copy of raw propsData
-    vm.$options.propsData = propsData;
-  }
-
-  // update listeners
-  if (listeners) {
-    var oldListeners = vm.$options._parentListeners;
-    vm.$options._parentListeners = listeners;
-    updateComponentListeners(vm, listeners, oldListeners);
-  }
-  // resolve slots + force update if has children
-  if (hasChildren) {
-    vm.$slots = resolveSlots(renderChildren, parentVnode.context);
-    vm.$forceUpdate();
-  }
-
-  {
-    isUpdatingChildComponent = false;
-  }
-}
-
-function isInInactiveTree (vm) {
-  while (vm && (vm = vm.$parent)) {
-    if (vm._inactive) { return true }
-  }
-  return false
-}
-
-function activateChildComponent (vm, direct) {
-  if (direct) {
-    vm._directInactive = false;
-    if (isInInactiveTree(vm)) {
-      return
-    }
-  } else if (vm._directInactive) {
-    return
-  }
-  if (vm._inactive || vm._inactive === null) {
-    vm._inactive = false;
-    for (var i = 0; i < vm.$children.length; i++) {
-      activateChildComponent(vm.$children[i]);
-    }
-    callHook(vm, 'activated');
-  }
-}
-
-function deactivateChildComponent (vm, direct) {
-  if (direct) {
-    vm._directInactive = true;
-    if (isInInactiveTree(vm)) {
-      return
-    }
-  }
-  if (!vm._inactive) {
-    vm._inactive = true;
-    for (var i = 0; i < vm.$children.length; i++) {
-      deactivateChildComponent(vm.$children[i]);
-    }
-    callHook(vm, 'deactivated');
-  }
-}
-
-function callHook (vm, hook) {
-  var handlers = vm.$options[hook];
-  if (handlers) {
-    for (var i = 0, j = handlers.length; i < j; i++) {
-      try {
-        handlers[i].call(vm);
-      } catch (e) {
-        handleError(e, vm, (hook + " hook"));
-      }
-    }
-  }
-  if (vm._hasHookEvent) {
-    vm.$emit('hook:' + hook);
-  }
-}
-
-/*  */
-
-
-var MAX_UPDATE_COUNT = 100;
-
-var queue = [];
-var activatedChildren = [];
-var has = {};
-var circular = {};
-var waiting = false;
-var flushing = false;
-var index = 0;
-
-/**
- * Reset the scheduler's state.
- */
-function resetSchedulerState () {
-  index = queue.length = activatedChildren.length = 0;
-  has = {};
-  {
-    circular = {};
-  }
-  waiting = flushing = false;
-}
-
-/**
- * Flush both queues and run the watchers.
- */
-function flushSchedulerQueue () {
-  flushing = true;
-  var watcher, id;
-
-  // Sort queue before flush.
-  // This ensures that:
-  // 1. Components are updated from parent to child. (because parent is always
-  //    created before the child)
-  // 2. A component's user watchers are run before its render watcher (because
-  //    user watchers are created before the render watcher)
-  // 3. If a component is destroyed during a parent component's watcher run,
-  //    its watchers can be skipped.
-  queue.sort(function (a, b) { return a.id - b.id; });
-
-  // do not cache length because more watchers might be pushed
-  // as we run existing watchers
-  for (index = 0; index < queue.length; index++) {
-    watcher = queue[index];
-    id = watcher.id;
-    has[id] = null;
-    watcher.run();
-    // in dev build, check and stop circular updates.
-    if ("development" !== 'production' && has[id] != null) {
-      circular[id] = (circular[id] || 0) + 1;
-      if (circular[id] > MAX_UPDATE_COUNT) {
-        warn(
-          'You may have an infinite update loop ' + (
-            watcher.user
-              ? ("in watcher with expression \"" + (watcher.expression) + "\"")
-              : "in a component render function."
-          ),
-          watcher.vm
-        );
-        break
-      }
-    }
-  }
-
-  // keep copies of post queues before resetting state
-  var activatedQueue = activatedChildren.slice();
-  var updatedQueue = queue.slice();
-
-  resetSchedulerState();
-
-  // call component updated and activated hooks
-  callActivatedHooks(activatedQueue);
-  callUpdatedHooks(updatedQueue);
-
-  // devtool hook
-  /* istanbul ignore if */
-  if (devtools && config.devtools) {
-    devtools.emit('flush');
-  }
-}
-
-function callUpdatedHooks (queue) {
-  var i = queue.length;
-  while (i--) {
-    var watcher = queue[i];
-    var vm = watcher.vm;
-    if (vm._watcher === watcher && vm._isMounted) {
-      callHook(vm, 'updated');
-    }
-  }
-}
-
-/**
- * Queue a kept-alive component that was activated during patch.
- * The queue will be processed after the entire tree has been patched.
- */
-function queueActivatedComponent (vm) {
-  // setting _inactive to false here so that a render function can
-  // rely on checking whether it's in an inactive tree (e.g. router-view)
-  vm._inactive = false;
-  activatedChildren.push(vm);
-}
-
-function callActivatedHooks (queue) {
-  for (var i = 0; i < queue.length; i++) {
-    queue[i]._inactive = true;
-    activateChildComponent(queue[i], true /* true */);
-  }
-}
-
-/**
- * Push a watcher into the watcher queue.
- * Jobs with duplicate IDs will be skipped unless it's
- * pushed when the queue is being flushed.
- */
-function queueWatcher (watcher) {
-  var id = watcher.id;
-  if (has[id] == null) {
-    has[id] = true;
-    if (!flushing) {
-      queue.push(watcher);
-    } else {
-      // if already flushing, splice the watcher based on its id
-      // if already past its id, it will be run next immediately.
-      var i = queue.length - 1;
-      while (i > index && queue[i].id > watcher.id) {
-        i--;
-      }
-      queue.splice(i + 1, 0, watcher);
-    }
-    // queue the flush
-    if (!waiting) {
-      waiting = true;
-      nextTick(flushSchedulerQueue);
-    }
-  }
-}
-
-/*  */
-
-var uid$2 = 0;
-
-/**
- * A watcher parses an expression, collects dependencies,
- * and fires callback when the expression value changes.
- * This is used for both the $watch() api and directives.
- */
-var Watcher = function Watcher (
-  vm,
-  expOrFn,
-  cb,
-  options
-) {
-  this.vm = vm;
-  vm._watchers.push(this);
-  // options
-  if (options) {
-    this.deep = !!options.deep;
-    this.user = !!options.user;
-    this.lazy = !!options.lazy;
-    this.sync = !!options.sync;
-  } else {
-    this.deep = this.user = this.lazy = this.sync = false;
-  }
-  this.cb = cb;
-  this.id = ++uid$2; // uid for batching
-  this.active = true;
-  this.dirty = this.lazy; // for lazy watchers
-  this.deps = [];
-  this.newDeps = [];
-  this.depIds = new _Set();
-  this.newDepIds = new _Set();
-  this.expression = expOrFn.toString();
-  // parse expression for getter
-  if (typeof expOrFn === 'function') {
-    this.getter = expOrFn;
-  } else {
-    this.getter = parsePath(expOrFn);
-    if (!this.getter) {
-      this.getter = function () {};
-      "development" !== 'production' && warn(
-        "Failed watching path: \"" + expOrFn + "\" " +
-        'Watcher only accepts simple dot-delimited paths. ' +
-        'For full control, use a function instead.',
-        vm
-      );
-    }
-  }
-  this.value = this.lazy
-    ? undefined
-    : this.get();
-};
-
-/**
- * Evaluate the getter, and re-collect dependencies.
- */
-Watcher.prototype.get = function get () {
-  pushTarget(this);
-  var value;
-  var vm = this.vm;
-  try {
-    value = this.getter.call(vm, vm);
-  } catch (e) {
-    if (this.user) {
-      handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
-    } else {
-      throw e
-    }
-  } finally {
-    // "touch" every property so they are all tracked as
-    // dependencies for deep watching
-    if (this.deep) {
-      traverse(value);
-    }
-    popTarget();
-    this.cleanupDeps();
-  }
-  return value
-};
-
-/**
- * Add a dependency to this directive.
- */
-Watcher.prototype.addDep = function addDep (dep) {
-  var id = dep.id;
-  if (!this.newDepIds.has(id)) {
-    this.newDepIds.add(id);
-    this.newDeps.push(dep);
-    if (!this.depIds.has(id)) {
-      dep.addSub(this);
-    }
-  }
-};
-
-/**
- * Clean up for dependency collection.
- */
-Watcher.prototype.cleanupDeps = function cleanupDeps () {
-    var this$1 = this;
-
-  var i = this.deps.length;
-  while (i--) {
-    var dep = this$1.deps[i];
-    if (!this$1.newDepIds.has(dep.id)) {
-      dep.removeSub(this$1);
-    }
-  }
-  var tmp = this.depIds;
-  this.depIds = this.newDepIds;
-  this.newDepIds = tmp;
-  this.newDepIds.clear();
-  tmp = this.deps;
-  this.deps = this.newDeps;
-  this.newDeps = tmp;
-  this.newDeps.length = 0;
-};
-
-/**
- * Subscriber interface.
- * Will be called when a dependency changes.
- */
-Watcher.prototype.update = function update () {
-  /* istanbul ignore else */
-  if (this.lazy) {
-    this.dirty = true;
-  } else if (this.sync) {
-    this.run();
-  } else {
-    queueWatcher(this);
-  }
-};
-
-/**
- * Scheduler job interface.
- * Will be called by the scheduler.
- */
-Watcher.prototype.run = function run () {
-  if (this.active) {
-    var value = this.get();
-    if (
-      value !== this.value ||
-      // Deep watchers and watchers on Object/Arrays should fire even
-      // when the value is the same, because the value may
-      // have mutated.
-      isObject(value) ||
-      this.deep
-    ) {
-      // set new value
-      var oldValue = this.value;
-      this.value = value;
-      if (this.user) {
-        try {
-          this.cb.call(this.vm, value, oldValue);
-        } catch (e) {
-          handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
-        }
-      } else {
-        this.cb.call(this.vm, value, oldValue);
-      }
-    }
-  }
-};
-
-/**
- * Evaluate the value of the watcher.
- * This only gets called for lazy watchers.
- */
-Watcher.prototype.evaluate = function evaluate () {
-  this.value = this.get();
-  this.dirty = false;
-};
-
-/**
- * Depend on all deps collected by this watcher.
- */
-Watcher.prototype.depend = function depend () {
-    var this$1 = this;
-
-  var i = this.deps.length;
-  while (i--) {
-    this$1.deps[i].depend();
-  }
-};
-
-/**
- * Remove self from all dependencies' subscriber list.
- */
-Watcher.prototype.teardown = function teardown () {
-    var this$1 = this;
-
-  if (this.active) {
-    // remove self from vm's watcher list
-    // this is a somewhat expensive operation so we skip it
-    // if the vm is being destroyed.
-    if (!this.vm._isBeingDestroyed) {
-      remove(this.vm._watchers, this);
-    }
-    var i = this.deps.length;
-    while (i--) {
-      this$1.deps[i].removeSub(this$1);
-    }
-    this.active = false;
-  }
-};
-
-/**
- * Recursively traverse an object to evoke all converted
- * getters, so that every nested property inside the object
- * is collected as a "deep" dependency.
- */
-var seenObjects = new _Set();
-function traverse (val) {
-  seenObjects.clear();
-  _traverse(val, seenObjects);
-}
-
-function _traverse (val, seen) {
-  var i, keys;
-  var isA = Array.isArray(val);
-  if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {
-    return
-  }
-  if (val.__ob__) {
-    var depId = val.__ob__.dep.id;
-    if (seen.has(depId)) {
-      return
-    }
-    seen.add(depId);
-  }
-  if (isA) {
-    i = val.length;
-    while (i--) { _traverse(val[i], seen); }
-  } else {
-    keys = Object.keys(val);
-    i = keys.length;
-    while (i--) { _traverse(val[keys[i]], seen); }
-  }
-}
-
-/*  */
-
-var sharedPropertyDefinition = {
-  enumerable: true,
-  configurable: true,
-  get: noop,
-  set: noop
-};
-
-function proxy (target, sourceKey, key) {
-  sharedPropertyDefinition.get = function proxyGetter () {
-    return this[sourceKey][key]
-  };
-  sharedPropertyDefinition.set = function proxySetter (val) {
-    this[sourceKey][key] = val;
-  };
-  Object.defineProperty(target, key, sharedPropertyDefinition);
-}
-
-function initState (vm) {
-  vm._watchers = [];
-  var opts = vm.$options;
-  if (opts.props) { initProps(vm, opts.props); }
-  if (opts.methods) { initMethods(vm, opts.methods); }
-  if (opts.data) {
-    initData(vm);
-  } else {
-    observe(vm._data = {}, true /* asRootData */);
-  }
-  if (opts.computed) { initComputed(vm, opts.computed); }
-  if (opts.watch && opts.watch !== nativeWatch) {
-    initWatch(vm, opts.watch);
-  }
-}
-
-function checkOptionType (vm, name) {
-  var option = vm.$options[name];
-  if (!isPlainObject(option)) {
-    warn(
-      ("component option \"" + name + "\" should be an object."),
-      vm
-    );
-  }
-}
-
-function initProps (vm, propsOptions) {
-  var propsData = vm.$options.propsData || {};
-  var props = vm._props = {};
-  // cache prop keys so that future props updates can iterate using Array
-  // instead of dynamic object key enumeration.
-  var keys = vm.$options._propKeys = [];
-  var isRoot = !vm.$parent;
-  // root instance props should be converted
-  observerState.shouldConvert = isRoot;
-  var loop = function ( key ) {
-    keys.push(key);
-    var value = validateProp(key, propsOptions, propsData, vm);
-    /* istanbul ignore else */
-    {
-      if (isReservedAttribute(key) || config.isReservedAttr(key)) {
-        warn(
-          ("\"" + key + "\" is a reserved attribute and cannot be used as component prop."),
-          vm
-        );
-      }
-      defineReactive$$1(props, key, value, function () {
-        if (vm.$parent && !isUpdatingChildComponent) {
-          warn(
-            "Avoid mutating a prop directly since the value will be " +
-            "overwritten whenever the parent component re-renders. " +
-            "Instead, use a data or computed property based on the prop's " +
-            "value. Prop being mutated: \"" + key + "\"",
-            vm
-          );
-        }
-      });
-    }
-    // static props are already proxied on the component's prototype
-    // during Vue.extend(). We only need to proxy props defined at
-    // instantiation here.
-    if (!(key in vm)) {
-      proxy(vm, "_props", key);
-    }
-  };
-
-  for (var key in propsOptions) { loop( key ); }
-  observerState.shouldConvert = true;
-}
-
-function initData (vm) {
-  var data = vm.$options.data;
-  data = vm._data = typeof data === 'function'
-    ? getData(data, vm)
-    : data || {};
-  if (!isPlainObject(data)) {
-    data = {};
-    "development" !== 'production' && warn(
-      'data functions should return an object:\n' +
-      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
-      vm
-    );
-  }
-  // proxy data on instance
-  var keys = Object.keys(data);
-  var props = vm.$options.props;
-  var methods = vm.$options.methods;
-  var i = keys.length;
-  while (i--) {
-    var key = keys[i];
-    {
-      if (methods && hasOwn(methods, key)) {
-        warn(
-          ("method \"" + key + "\" has already been defined as a data property."),
-          vm
-        );
-      }
-    }
-    if (props && hasOwn(props, key)) {
-      "development" !== 'production' && warn(
-        "The data property \"" + key + "\" is already declared as a prop. " +
-        "Use prop default value instead.",
-        vm
-      );
-    } else if (!isReserved(key)) {
-      proxy(vm, "_data", key);
-    }
-  }
-  // observe data
-  observe(data, true /* asRootData */);
-}
-
-function getData (data, vm) {
-  try {
-    return data.call(vm)
-  } catch (e) {
-    handleError(e, vm, "data()");
-    return {}
-  }
-}
-
-var computedWatcherOptions = { lazy: true };
-
-function initComputed (vm, computed) {
-  "development" !== 'production' && checkOptionType(vm, 'computed');
-  var watchers = vm._computedWatchers = Object.create(null);
-
-  for (var key in computed) {
-    var userDef = computed[key];
-    var getter = typeof userDef === 'function' ? userDef : userDef.get;
-    if ("development" !== 'production' && getter == null) {
-      warn(
-        ("Getter is missing for computed property \"" + key + "\"."),
-        vm
-      );
-    }
-    // create internal watcher for the computed property.
-    watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);
-
-    // component-defined computed properties are already defined on the
-    // component prototype. We only need to define computed properties defined
-    // at instantiation here.
-    if (!(key in vm)) {
-      defineComputed(vm, key, userDef);
-    } else {
-      if (key in vm.$data) {
-        warn(("The computed property \"" + key + "\" is already defined in data."), vm);
-      } else if (vm.$options.props && key in vm.$options.props) {
-        warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
-      }
-    }
-  }
-}
-
-function defineComputed (target, key, userDef) {
-  if (typeof userDef === 'function') {
-    sharedPropertyDefinition.get = createComputedGetter(key);
-    sharedPropertyDefinition.set = noop;
-  } else {
-    sharedPropertyDefinition.get = userDef.get
-      ? userDef.cache !== false
-        ? createComputedGetter(key)
-        : userDef.get
-      : noop;
-    sharedPropertyDefinition.set = userDef.set
-      ? userDef.set
-      : noop;
-  }
-  if ("development" !== 'production' &&
-      sharedPropertyDefinition.set === noop) {
-    sharedPropertyDefinition.set = function () {
-      warn(
-        ("Computed property \"" + key + "\" was assigned to but it has no setter."),
-        this
-      );
-    };
-  }
-  Object.defineProperty(target, key, sharedPropertyDefinition);
-}
-
-function createComputedGetter (key) {
-  return function computedGetter () {
-    var watcher = this._computedWatchers && this._computedWatchers[key];
-    if (watcher) {
-      if (watcher.dirty) {
-        watcher.evaluate();
-      }
-      if (Dep.target) {
-        watcher.depend();
-      }
-      return watcher.value
-    }
-  }
-}
-
-function initMethods (vm, methods) {
-  "development" !== 'production' && checkOptionType(vm, 'methods');
-  var props = vm.$options.props;
-  for (var key in methods) {
-    vm[key] = methods[key] == null ? noop : bind(methods[key], vm);
-    {
-      if (methods[key] == null) {
-        warn(
-          "method \"" + key + "\" has an undefined value in the component definition. " +
-          "Did you reference the function correctly?",
-          vm
-        );
-      }
-      if (props && hasOwn(props, key)) {
-        warn(
-          ("method \"" + key + "\" has already been defined as a prop."),
-          vm
-        );
-      }
-    }
-  }
-}
-
-function initWatch (vm, watch) {
-  "development" !== 'production' && checkOptionType(vm, 'watch');
-  for (var key in watch) {
-    var handler = watch[key];
-    if (Array.isArray(handler)) {
-      for (var i = 0; i < handler.length; i++) {
-        createWatcher(vm, key, handler[i]);
-      }
-    } else {
-      createWatcher(vm, key, handler);
-    }
-  }
-}
-
-function createWatcher (
-  vm,
-  keyOrFn,
-  handler,
-  options
-) {
-  if (isPlainObject(handler)) {
-    options = handler;
-    handler = handler.handler;
-  }
-  if (typeof handler === 'string') {
-    handler = vm[handler];
-  }
-  return vm.$watch(keyOrFn, handler, options)
-}
-
-function stateMixin (Vue) {
-  // flow somehow has problems with directly declared definition object
-  // when using Object.defineProperty, so we have to procedurally build up
-  // the object here.
-  var dataDef = {};
-  dataDef.get = function () { return this._data };
-  var propsDef = {};
-  propsDef.get = function () { return this._props };
-  {
-    dataDef.set = function (newData) {
-      warn(
-        'Avoid replacing instance root $data. ' +
-        'Use nested data properties instead.',
-        this
-      );
-    };
-    propsDef.set = function () {
-      warn("$props is readonly.", this);
-    };
-  }
-  Object.defineProperty(Vue.pr

<TRUNCATED>