Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/notifications.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2019-09-02 16:10:44 +0300
committerGitHub <noreply@github.com>2019-09-02 16:10:44 +0300
commit3e37a48a9c11dfbdf9b9bd69afaf8b4e0980c15c (patch)
tree911c8474004fa2fa9e9db4cb79f6308100eb9be5
parenta4c83b59ecae8d921612ef816158f011bcd199a4 (diff)
parent468bcaed5f75c6213688c6ffc9b4cbcfc8dbef92 (diff)
Merge pull request #424 from nextcloud/dependabot/npm_and_yarn/webpack-4.39.3v17.0.0beta4
Bump webpack from 4.39.2 to 4.39.3
-rw-r--r--js/notifications.js4
-rw-r--r--js/notifications.js.map2
-rw-r--r--package-lock.json36
-rw-r--r--package.json2
4 files changed, 22 insertions, 22 deletions
diff --git a/js/notifications.js b/js/notifications.js
index e151f4c..a9f98b2 100644
--- a/js/notifications.js
+++ b/js/notifications.js
@@ -1,4 +1,4 @@
-!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/js/",n(n.s=62)}([function(t,e,n){"use strict";var r=n(9),i=n(21),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function u(t){return null!==t&&"object"==typeof t}function s(t){return"[object Function]"===o.call(t)}function c(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:i,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:u,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:s,isStream:function(t){return u(t)&&s(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:c,merge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]=n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return e},deepMerge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]="object"==typeof n?t({},n):n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return e},extend:function(t,e,n){return c(e,function(e,i){t[i]=n&&"function"==typeof e?r(e,n):e}),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){(function(t,n){(function(){var r,i=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",u="__lodash_hash_undefined__",s=500,c="__lodash_placeholder__",f=1,l=2,p=4,d=1,h=2,v=1,m=2,g=4,y=8,_=16,b=32,w=64,x=128,C=256,k=512,A=30,$="...",O=800,S=16,T=1,j=2,E=1/0,M=9007199254740991,N=17976931348623157e292,I=NaN,R=4294967295,L=R-1,P=R>>>1,D=[["ary",x],["bind",v],["bindKey",m],["curry",y],["curryRight",_],["flip",k],["partial",b],["partialRight",w],["rearg",C]],F="[object Arguments]",U="[object Array]",B="[object AsyncFunction]",H="[object Boolean]",z="[object Date]",q="[object DOMException]",W="[object Error]",V="[object Function]",K="[object GeneratorFunction]",J="[object Map]",Z="[object Number]",G="[object Null]",X="[object Object]",Y="[object Proxy]",Q="[object RegExp]",tt="[object Set]",et="[object String]",nt="[object Symbol]",rt="[object Undefined]",it="[object WeakMap]",ot="[object WeakSet]",at="[object ArrayBuffer]",ut="[object DataView]",st="[object Float32Array]",ct="[object Float64Array]",ft="[object Int8Array]",lt="[object Int16Array]",pt="[object Int32Array]",dt="[object Uint8Array]",ht="[object Uint8ClampedArray]",vt="[object Uint16Array]",mt="[object Uint32Array]",gt=/\b__p \+= '';/g,yt=/\b(__p \+=) '' \+/g,_t=/(__e\(.*?\)|\b__t\)) \+\n'';/g,bt=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,xt=RegExp(bt.source),Ct=RegExp(wt.source),kt=/<%-([\s\S]+?)%>/g,At=/<%([\s\S]+?)%>/g,$t=/<%=([\s\S]+?)%>/g,Ot=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,St=/^\w*$/,Tt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,jt=/[\\^$.*+?()[\]{}|]/g,Et=RegExp(jt.source),Mt=/^\s+|\s+$/g,Nt=/^\s+/,It=/\s+$/,Rt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Lt=/\{\n\/\* \[wrapped with (.+)\] \*/,Pt=/,? & /,Dt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ft=/\\(\\)?/g,Ut=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Bt=/\w*$/,Ht=/^[-+]0x[0-9a-f]+$/i,zt=/^0b[01]+$/i,qt=/^\[object .+?Constructor\]$/,Wt=/^0o[0-7]+$/i,Vt=/^(?:0|[1-9]\d*)$/,Kt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Jt=/($^)/,Zt=/['\n\r\u2028\u2029\\]/g,Gt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Xt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Yt="[\\ud800-\\udfff]",Qt="["+Xt+"]",te="["+Gt+"]",ee="\\d+",ne="[\\u2700-\\u27bf]",re="[a-z\\xdf-\\xf6\\xf8-\\xff]",ie="[^\\ud800-\\udfff"+Xt+ee+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",oe="\\ud83c[\\udffb-\\udfff]",ae="[^\\ud800-\\udfff]",ue="(?:\\ud83c[\\udde6-\\uddff]){2}",se="[\\ud800-\\udbff][\\udc00-\\udfff]",ce="[A-Z\\xc0-\\xd6\\xd8-\\xde]",fe="(?:"+re+"|"+ie+")",le="(?:"+ce+"|"+ie+")",pe="(?:"+te+"|"+oe+")"+"?",de="[\\ufe0e\\ufe0f]?"+pe+("(?:\\u200d(?:"+[ae,ue,se].join("|")+")[\\ufe0e\\ufe0f]?"+pe+")*"),he="(?:"+[ne,ue,se].join("|")+")"+de,ve="(?:"+[ae+te+"?",te,ue,se,Yt].join("|")+")",me=RegExp("['’]","g"),ge=RegExp(te,"g"),ye=RegExp(oe+"(?="+oe+")|"+ve+de,"g"),_e=RegExp([ce+"?"+re+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Qt,ce,"$"].join("|")+")",le+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Qt,ce+fe,"$"].join("|")+")",ce+"?"+fe+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ce+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ee,he].join("|"),"g"),be=RegExp("[\\u200d\\ud800-\\udfff"+Gt+"\\ufe0e\\ufe0f]"),we=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xe=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ce=-1,ke={};ke[st]=ke[ct]=ke[ft]=ke[lt]=ke[pt]=ke[dt]=ke[ht]=ke[vt]=ke[mt]=!0,ke[F]=ke[U]=ke[at]=ke[H]=ke[ut]=ke[z]=ke[W]=ke[V]=ke[J]=ke[Z]=ke[X]=ke[Q]=ke[tt]=ke[et]=ke[it]=!1;var Ae={};Ae[F]=Ae[U]=Ae[at]=Ae[ut]=Ae[H]=Ae[z]=Ae[st]=Ae[ct]=Ae[ft]=Ae[lt]=Ae[pt]=Ae[J]=Ae[Z]=Ae[X]=Ae[Q]=Ae[tt]=Ae[et]=Ae[nt]=Ae[dt]=Ae[ht]=Ae[vt]=Ae[mt]=!0,Ae[W]=Ae[V]=Ae[it]=!1;var $e={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Oe=parseFloat,Se=parseInt,Te="object"==typeof t&&t&&t.Object===Object&&t,je="object"==typeof self&&self&&self.Object===Object&&self,Ee=Te||je||Function("return this")(),Me=e&&!e.nodeType&&e,Ne=Me&&"object"==typeof n&&n&&!n.nodeType&&n,Ie=Ne&&Ne.exports===Me,Re=Ie&&Te.process,Le=function(){try{var t=Ne&&Ne.require&&Ne.require("util").types;return t||Re&&Re.binding&&Re.binding("util")}catch(t){}}(),Pe=Le&&Le.isArrayBuffer,De=Le&&Le.isDate,Fe=Le&&Le.isMap,Ue=Le&&Le.isRegExp,Be=Le&&Le.isSet,He=Le&&Le.isTypedArray;function ze(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function qe(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function We(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function Ve(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function Ke(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function Je(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function Ze(t,e){return!!(null==t?0:t.length)&&an(t,e,0)>-1}function Ge(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function Xe(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function Ye(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function Qe(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function tn(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function en(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}var nn=fn("length");function rn(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function on(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function an(t,e,n){return e==e?function(t,e,n){var r=n-1,i=t.length;for(;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):on(t,sn,n)}function un(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function sn(t){return t!=t}function cn(t,e){var n=null==t?0:t.length;return n?dn(t,e)/n:I}function fn(t){return function(e){return null==e?r:e[t]}}function ln(t){return function(e){return null==t?r:t[e]}}function pn(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function dn(t,e){for(var n,i=-1,o=t.length;++i<o;){var a=e(t[i]);a!==r&&(n=n===r?a:n+a)}return n}function hn(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function vn(t){return function(e){return t(e)}}function mn(t,e){return Xe(e,function(e){return t[e]})}function gn(t,e){return t.has(e)}function yn(t,e){for(var n=-1,r=t.length;++n<r&&an(e,t[n],0)>-1;);return n}function _n(t,e){for(var n=t.length;n--&&an(e,t[n],0)>-1;);return n}var bn=ln({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),wn=ln({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function xn(t){return"\\"+$e[t]}function Cn(t){return be.test(t)}function kn(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function An(t,e){return function(n){return t(e(n))}}function $n(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==c||(t[n]=c,o[i++]=n)}return o}function On(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function Sn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function Tn(t){return Cn(t)?function(t){var e=ye.lastIndex=0;for(;ye.test(t);)++e;return e}(t):nn(t)}function jn(t){return Cn(t)?function(t){return t.match(ye)||[]}(t):function(t){return t.split("")}(t)}var En=ln({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"});var Mn=function t(e){var n,Gt=(e=null==e?Ee:Mn.defaults(Ee.Object(),e,Mn.pick(Ee,xe))).Array,Xt=e.Date,Yt=e.Error,Qt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,ie=e.TypeError,oe=Gt.prototype,ae=Qt.prototype,ue=ee.prototype,se=e["__core-js_shared__"],ce=ae.toString,fe=ue.hasOwnProperty,le=0,pe=(n=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",de=ue.toString,he=ce.call(ee),ve=Ee._,ye=ne("^"+ce.call(fe).replace(jt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),be=Ie?e.Buffer:r,$e=e.Symbol,Te=e.Uint8Array,je=be?be.allocUnsafe:r,Me=An(ee.getPrototypeOf,ee),Ne=ee.create,Re=ue.propertyIsEnumerable,Le=oe.splice,nn=$e?$e.isConcatSpreadable:r,ln=$e?$e.iterator:r,Nn=$e?$e.toStringTag:r,In=function(){try{var t=Fo(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),Rn=e.clearTimeout!==Ee.clearTimeout&&e.clearTimeout,Ln=Xt&&Xt.now!==Ee.Date.now&&Xt.now,Pn=e.setTimeout!==Ee.setTimeout&&e.setTimeout,Dn=te.ceil,Fn=te.floor,Un=ee.getOwnPropertySymbols,Bn=be?be.isBuffer:r,Hn=e.isFinite,zn=oe.join,qn=An(ee.keys,ee),Wn=te.max,Vn=te.min,Kn=Xt.now,Jn=e.parseInt,Zn=te.random,Gn=oe.reverse,Xn=Fo(e,"DataView"),Yn=Fo(e,"Map"),Qn=Fo(e,"Promise"),tr=Fo(e,"Set"),er=Fo(e,"WeakMap"),nr=Fo(ee,"create"),rr=er&&new er,ir={},or=la(Xn),ar=la(Yn),ur=la(Qn),sr=la(tr),cr=la(er),fr=$e?$e.prototype:r,lr=fr?fr.valueOf:r,pr=fr?fr.toString:r;function dr(t){if(Su(t)&&!gu(t)&&!(t instanceof gr)){if(t instanceof mr)return t;if(fe.call(t,"__wrapped__"))return pa(t)}return new mr(t)}var hr=function(){function t(){}return function(e){if(!Ou(e))return{};if(Ne)return Ne(e);t.prototype=e;var n=new t;return t.prototype=r,n}}();function vr(){}function mr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=r}function gr(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=R,this.__views__=[]}function yr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function _r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function br(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function wr(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new br;++e<n;)this.add(t[e])}function xr(t){var e=this.__data__=new _r(t);this.size=e.size}function Cr(t,e){var n=gu(t),r=!n&&mu(t),i=!n&&!r&&wu(t),o=!n&&!r&&!i&&Lu(t),a=n||r||i||o,u=a?hn(t.length,re):[],s=u.length;for(var c in t)!e&&!fe.call(t,c)||a&&("length"==c||i&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Vo(c,s))||u.push(c);return u}function kr(t){var e=t.length;return e?t[wi(0,e-1)]:r}function Ar(t,e){return sa(no(t),Ir(e,0,t.length))}function $r(t){return sa(no(t))}function Or(t,e,n){(n===r||du(t[e],n))&&(n!==r||e in t)||Mr(t,e,n)}function Sr(t,e,n){var i=t[e];fe.call(t,e)&&du(i,n)&&(n!==r||e in t)||Mr(t,e,n)}function Tr(t,e){for(var n=t.length;n--;)if(du(t[n][0],e))return n;return-1}function jr(t,e,n,r){return Fr(t,function(t,i,o){e(r,t,n(t),o)}),r}function Er(t,e){return t&&ro(e,is(e),t)}function Mr(t,e,n){"__proto__"==e&&In?In(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Nr(t,e){for(var n=-1,i=e.length,o=Gt(i),a=null==t;++n<i;)o[n]=a?r:Qu(t,e[n]);return o}function Ir(t,e,n){return t==t&&(n!==r&&(t=t<=n?t:n),e!==r&&(t=t>=e?t:e)),t}function Rr(t,e,n,i,o,a){var u,s=e&f,c=e&l,d=e&p;if(n&&(u=o?n(t,i,o,a):n(t)),u!==r)return u;if(!Ou(t))return t;var h=gu(t);if(h){if(u=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&fe.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!s)return no(t,u)}else{var v=Ho(t),m=v==V||v==K;if(wu(t))return Gi(t,s);if(v==X||v==F||m&&!o){if(u=c||m?{}:qo(t),!s)return c?function(t,e){return ro(t,Bo(t),e)}(t,function(t,e){return t&&ro(e,os(e),t)}(u,t)):function(t,e){return ro(t,Uo(t),e)}(t,Er(u,t))}else{if(!Ae[v])return o?t:{};u=function(t,e,n){var r=t.constructor;switch(e){case at:return Xi(t);case H:case z:return new r(+t);case ut:return function(t,e){var n=e?Xi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case st:case ct:case ft:case lt:case pt:case dt:case ht:case vt:case mt:return Yi(t,n);case J:return new r;case Z:case et:return new r(t);case Q:return function(t){var e=new t.constructor(t.source,Bt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case tt:return new r;case nt:return i=t,lr?ee(lr.call(i)):{}}var i}(t,v,s)}}a||(a=new xr);var g=a.get(t);if(g)return g;a.set(t,u),Nu(t)?t.forEach(function(r){u.add(Rr(r,e,n,r,t,a))}):Tu(t)&&t.forEach(function(r,i){u.set(i,Rr(r,e,n,i,t,a))});var y=h?r:(d?c?Mo:Eo:c?os:is)(t);return We(y||t,function(r,i){y&&(r=t[i=r]),Sr(u,i,Rr(r,e,n,i,t,a))}),u}function Lr(t,e,n){var i=n.length;if(null==t)return!i;for(t=ee(t);i--;){var o=n[i],a=e[o],u=t[o];if(u===r&&!(o in t)||!a(u))return!1}return!0}function Pr(t,e,n){if("function"!=typeof t)throw new ie(a);return ia(function(){t.apply(r,n)},e)}function Dr(t,e,n,r){var o=-1,a=Ze,u=!0,s=t.length,c=[],f=e.length;if(!s)return c;n&&(e=Xe(e,vn(n))),r?(a=Ge,u=!1):e.length>=i&&(a=gn,u=!1,e=new wr(e));t:for(;++o<s;){var l=t[o],p=null==n?l:n(l);if(l=r||0!==l?l:0,u&&p==p){for(var d=f;d--;)if(e[d]===p)continue t;c.push(l)}else a(e,p,r)||c.push(l)}return c}dr.templateSettings={escape:kt,evaluate:At,interpolate:$t,variable:"",imports:{_:dr}},dr.prototype=vr.prototype,dr.prototype.constructor=dr,mr.prototype=hr(vr.prototype),mr.prototype.constructor=mr,gr.prototype=hr(vr.prototype),gr.prototype.constructor=gr,yr.prototype.clear=function(){this.__data__=nr?nr(null):{},this.size=0},yr.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},yr.prototype.get=function(t){var e=this.__data__;if(nr){var n=e[t];return n===u?r:n}return fe.call(e,t)?e[t]:r},yr.prototype.has=function(t){var e=this.__data__;return nr?e[t]!==r:fe.call(e,t)},yr.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nr&&e===r?u:e,this},_r.prototype.clear=function(){this.__data__=[],this.size=0},_r.prototype.delete=function(t){var e=this.__data__,n=Tr(e,t);return!(n<0)&&(n==e.length-1?e.pop():Le.call(e,n,1),--this.size,!0)},_r.prototype.get=function(t){var e=this.__data__,n=Tr(e,t);return n<0?r:e[n][1]},_r.prototype.has=function(t){return Tr(this.__data__,t)>-1},_r.prototype.set=function(t,e){var n=this.__data__,r=Tr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},br.prototype.clear=function(){this.size=0,this.__data__={hash:new yr,map:new(Yn||_r),string:new yr}},br.prototype.delete=function(t){var e=Po(this,t).delete(t);return this.size-=e?1:0,e},br.prototype.get=function(t){return Po(this,t).get(t)},br.prototype.has=function(t){return Po(this,t).has(t)},br.prototype.set=function(t,e){var n=Po(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},wr.prototype.add=wr.prototype.push=function(t){return this.__data__.set(t,u),this},wr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.clear=function(){this.__data__=new _r,this.size=0},xr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},xr.prototype.get=function(t){return this.__data__.get(t)},xr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof _r){var r=n.__data__;if(!Yn||r.length<i-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new br(r)}return n.set(t,e),this.size=n.size,this};var Fr=ao(Kr),Ur=ao(Jr,!0);function Br(t,e){var n=!0;return Fr(t,function(t,r,i){return n=!!e(t,r,i)}),n}function Hr(t,e,n){for(var i=-1,o=t.length;++i<o;){var a=t[i],u=e(a);if(null!=u&&(s===r?u==u&&!Ru(u):n(u,s)))var s=u,c=a}return c}function zr(t,e){var n=[];return Fr(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function qr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=Wo),i||(i=[]);++o<a;){var u=t[o];e>0&&n(u)?e>1?qr(u,e-1,n,r,i):Ye(i,u):r||(i[i.length]=u)}return i}var Wr=uo(),Vr=uo(!0);function Kr(t,e){return t&&Wr(t,e,is)}function Jr(t,e){return t&&Vr(t,e,is)}function Zr(t,e){return Je(e,function(e){return ku(t[e])})}function Gr(t,e){for(var n=0,i=(e=Vi(e,t)).length;null!=t&&n<i;)t=t[fa(e[n++])];return n&&n==i?t:r}function Xr(t,e,n){var r=e(t);return gu(t)?r:Ye(r,n(t))}function Yr(t){return null==t?t===r?rt:G:Nn&&Nn in ee(t)?function(t){var e=fe.call(t,Nn),n=t[Nn];try{t[Nn]=r;var i=!0}catch(t){}var o=de.call(t);i&&(e?t[Nn]=n:delete t[Nn]);return o}(t):function(t){return de.call(t)}(t)}function Qr(t,e){return t>e}function ti(t,e){return null!=t&&fe.call(t,e)}function ei(t,e){return null!=t&&e in ee(t)}function ni(t,e,n){for(var i=n?Ge:Ze,o=t[0].length,a=t.length,u=a,s=Gt(a),c=1/0,f=[];u--;){var l=t[u];u&&e&&(l=Xe(l,vn(e))),c=Vn(l.length,c),s[u]=!n&&(e||o>=120&&l.length>=120)?new wr(u&&l):r}l=t[0];var p=-1,d=s[0];t:for(;++p<o&&f.length<c;){var h=l[p],v=e?e(h):h;if(h=n||0!==h?h:0,!(d?gn(d,v):i(f,v,n))){for(u=a;--u;){var m=s[u];if(!(m?gn(m,v):i(t[u],v,n)))continue t}d&&d.push(v),f.push(h)}}return f}function ri(t,e,n){var i=null==(t=ea(t,e=Vi(e,t)))?t:t[fa(Ca(e))];return null==i?r:ze(i,t,n)}function ii(t){return Su(t)&&Yr(t)==F}function oi(t,e,n,i,o){return t===e||(null==t||null==e||!Su(t)&&!Su(e)?t!=t&&e!=e:function(t,e,n,i,o,a){var u=gu(t),s=gu(e),c=u?U:Ho(t),f=s?U:Ho(e),l=(c=c==F?X:c)==X,p=(f=f==F?X:f)==X,v=c==f;if(v&&wu(t)){if(!wu(e))return!1;u=!0,l=!1}if(v&&!l)return a||(a=new xr),u||Lu(t)?To(t,e,n,i,o,a):function(t,e,n,r,i,o,a){switch(n){case ut:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case at:return!(t.byteLength!=e.byteLength||!o(new Te(t),new Te(e)));case H:case z:case Z:return du(+t,+e);case W:return t.name==e.name&&t.message==e.message;case Q:case et:return t==e+"";case J:var u=kn;case tt:var s=r&d;if(u||(u=On),t.size!=e.size&&!s)return!1;var c=a.get(t);if(c)return c==e;r|=h,a.set(t,e);var f=To(u(t),u(e),r,i,o,a);return a.delete(t),f;case nt:if(lr)return lr.call(t)==lr.call(e)}return!1}(t,e,c,n,i,o,a);if(!(n&d)){var m=l&&fe.call(t,"__wrapped__"),g=p&&fe.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,_=g?e.value():e;return a||(a=new xr),o(y,_,n,i,a)}}if(!v)return!1;return a||(a=new xr),function(t,e,n,i,o,a){var u=n&d,s=Eo(t),c=s.length,f=Eo(e).length;if(c!=f&&!u)return!1;var l=c;for(;l--;){var p=s[l];if(!(u?p in e:fe.call(e,p)))return!1}var h=a.get(t);if(h&&a.get(e))return h==e;var v=!0;a.set(t,e),a.set(e,t);var m=u;for(;++l<c;){p=s[l];var g=t[p],y=e[p];if(i)var _=u?i(y,g,p,e,t,a):i(g,y,p,t,e,a);if(!(_===r?g===y||o(g,y,n,i,a):_)){v=!1;break}m||(m="constructor"==p)}if(v&&!m){var b=t.constructor,w=e.constructor;b!=w&&"constructor"in t&&"constructor"in e&&!("function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w)&&(v=!1)}return a.delete(t),a.delete(e),v}(t,e,n,i,o,a)}(t,e,n,i,oi,o))}function ai(t,e,n,i){var o=n.length,a=o,u=!i;if(null==t)return!a;for(t=ee(t);o--;){var s=n[o];if(u&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++o<a;){var c=(s=n[o])[0],f=t[c],l=s[1];if(u&&s[2]){if(f===r&&!(c in t))return!1}else{var p=new xr;if(i)var v=i(f,l,c,t,e,p);if(!(v===r?oi(l,f,d|h,i,p):v))return!1}}return!0}function ui(t){return!(!Ou(t)||(e=t,pe&&pe in e))&&(ku(t)?ye:qt).test(la(t));var e}function si(t){return"function"==typeof t?t:null==t?js:"object"==typeof t?gu(t)?hi(t[0],t[1]):di(t):Fs(t)}function ci(t){if(!Xo(t))return qn(t);var e=[];for(var n in ee(t))fe.call(t,n)&&"constructor"!=n&&e.push(n);return e}function fi(t){if(!Ou(t))return function(t){var e=[];if(null!=t)for(var n in ee(t))e.push(n);return e}(t);var e=Xo(t),n=[];for(var r in t)("constructor"!=r||!e&&fe.call(t,r))&&n.push(r);return n}function li(t,e){return t<e}function pi(t,e){var n=-1,r=_u(t)?Gt(t.length):[];return Fr(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function di(t){var e=Do(t);return 1==e.length&&e[0][2]?Qo(e[0][0],e[0][1]):function(n){return n===t||ai(n,t,e)}}function hi(t,e){return Jo(t)&&Yo(e)?Qo(fa(t),e):function(n){var i=Qu(n,t);return i===r&&i===e?ts(n,t):oi(e,i,d|h)}}function vi(t,e,n,i,o){t!==e&&Wr(e,function(a,u){if(o||(o=new xr),Ou(a))!function(t,e,n,i,o,a,u){var s=na(t,n),c=na(e,n),f=u.get(c);if(f)return void Or(t,n,f);var l=a?a(s,c,n+"",t,e,u):r,p=l===r;if(p){var d=gu(c),h=!d&&wu(c),v=!d&&!h&&Lu(c);l=c,d||h||v?gu(s)?l=s:bu(s)?l=no(s):h?(p=!1,l=Gi(c,!0)):v?(p=!1,l=Yi(c,!0)):l=[]:Eu(c)||mu(c)?(l=s,mu(s)?l=qu(s):Ou(s)&&!ku(s)||(l=qo(c))):p=!1}p&&(u.set(c,l),o(l,c,i,a,u),u.delete(c));Or(t,n,l)}(t,e,u,n,vi,i,o);else{var s=i?i(na(t,u),a,u+"",t,e,o):r;s===r&&(s=a),Or(t,u,s)}},os)}function mi(t,e){var n=t.length;if(n)return Vo(e+=e<0?n:0,n)?t[e]:r}function gi(t,e,n){var r=-1;return e=Xe(e.length?e:[js],vn(Lo())),function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}(pi(t,function(t,n,i){return{criteria:Xe(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return function(t,e,n){var r=-1,i=t.criteria,o=e.criteria,a=i.length,u=n.length;for(;++r<a;){var s=Qi(i[r],o[r]);if(s){if(r>=u)return s;var c=n[r];return s*("desc"==c?-1:1)}}return t.index-e.index}(t,e,n)})}function yi(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],u=Gr(t,a);n(u,a)&&$i(o,Vi(a,t),u)}return o}function _i(t,e,n,r){var i=r?un:an,o=-1,a=e.length,u=t;for(t===e&&(e=no(e)),n&&(u=Xe(t,vn(n)));++o<a;)for(var s=0,c=e[o],f=n?n(c):c;(s=i(u,f,s,r))>-1;)u!==t&&Le.call(u,s,1),Le.call(t,s,1);return t}function bi(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Vo(i)?Le.call(t,i,1):Di(t,i)}}return t}function wi(t,e){return t+Fn(Zn()*(e-t+1))}function xi(t,e){var n="";if(!t||e<1||e>M)return n;do{e%2&&(n+=t),(e=Fn(e/2))&&(t+=t)}while(e);return n}function Ci(t,e){return oa(ta(t,e,js),t+"")}function ki(t){return kr(ds(t))}function Ai(t,e){var n=ds(t);return sa(n,Ir(e,0,n.length))}function $i(t,e,n,i){if(!Ou(t))return t;for(var o=-1,a=(e=Vi(e,t)).length,u=a-1,s=t;null!=s&&++o<a;){var c=fa(e[o]),f=n;if(o!=u){var l=s[c];(f=i?i(l,c,s):r)===r&&(f=Ou(l)?l:Vo(e[o+1])?[]:{})}Sr(s,c,f),s=s[c]}return t}var Oi=rr?function(t,e){return rr.set(t,e),t}:js,Si=In?function(t,e){return In(t,"toString",{configurable:!0,enumerable:!1,value:Os(e),writable:!0})}:js;function Ti(t){return sa(ds(t))}function ji(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Gt(i);++r<i;)o[r]=t[r+e];return o}function Ei(t,e){var n;return Fr(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function Mi(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e==e&&i<=P){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!Ru(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return Ni(t,e,js,n)}function Ni(t,e,n,i){e=n(e);for(var o=0,a=null==t?0:t.length,u=e!=e,s=null===e,c=Ru(e),f=e===r;o<a;){var l=Fn((o+a)/2),p=n(t[l]),d=p!==r,h=null===p,v=p==p,m=Ru(p);if(u)var g=i||v;else g=f?v&&(i||d):s?v&&d&&(i||!h):c?v&&d&&!h&&(i||!m):!h&&!m&&(i?p<=e:p<e);g?o=l+1:a=l}return Vn(a,L)}function Ii(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],u=e?e(a):a;if(!n||!du(u,s)){var s=u;o[i++]=0===a?0:a}}return o}function Ri(t){return"number"==typeof t?t:Ru(t)?I:+t}function Li(t){if("string"==typeof t)return t;if(gu(t))return Xe(t,Li)+"";if(Ru(t))return pr?pr.call(t):"";var e=t+"";return"0"==e&&1/t==-E?"-0":e}function Pi(t,e,n){var r=-1,o=Ze,a=t.length,u=!0,s=[],c=s;if(n)u=!1,o=Ge;else if(a>=i){var f=e?null:Co(t);if(f)return On(f);u=!1,o=gn,c=new wr}else c=e?[]:s;t:for(;++r<a;){var l=t[r],p=e?e(l):l;if(l=n||0!==l?l:0,u&&p==p){for(var d=c.length;d--;)if(c[d]===p)continue t;e&&c.push(p),s.push(l)}else o(c,p,n)||(c!==s&&c.push(p),s.push(l))}return s}function Di(t,e){return null==(t=ea(t,e=Vi(e,t)))||delete t[fa(Ca(e))]}function Fi(t,e,n,r){return $i(t,e,n(Gr(t,e)),r)}function Ui(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?ji(t,r?0:o,r?o+1:i):ji(t,r?o+1:0,r?i:o)}function Bi(t,e){var n=t;return n instanceof gr&&(n=n.value()),Qe(e,function(t,e){return e.func.apply(e.thisArg,Ye([t],e.args))},n)}function Hi(t,e,n){var r=t.length;if(r<2)return r?Pi(t[0]):[];for(var i=-1,o=Gt(r);++i<r;)for(var a=t[i],u=-1;++u<r;)u!=i&&(o[i]=Dr(o[i]||a,t[u],e,n));return Pi(qr(o,1),e,n)}function zi(t,e,n){for(var i=-1,o=t.length,a=e.length,u={};++i<o;){var s=i<a?e[i]:r;n(u,t[i],s)}return u}function qi(t){return bu(t)?t:[]}function Wi(t){return"function"==typeof t?t:js}function Vi(t,e){return gu(t)?t:Jo(t,e)?[t]:ca(Wu(t))}var Ki=Ci;function Ji(t,e,n){var i=t.length;return n=n===r?i:n,!e&&n>=i?t:ji(t,e,n)}var Zi=Rn||function(t){return Ee.clearTimeout(t)};function Gi(t,e){if(e)return t.slice();var n=t.length,r=je?je(n):new t.constructor(n);return t.copy(r),r}function Xi(t){var e=new t.constructor(t.byteLength);return new Te(e).set(new Te(t)),e}function Yi(t,e){var n=e?Xi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Qi(t,e){if(t!==e){var n=t!==r,i=null===t,o=t==t,a=Ru(t),u=e!==r,s=null===e,c=e==e,f=Ru(e);if(!s&&!f&&!a&&t>e||a&&u&&c&&!s&&!f||i&&u&&c||!n&&c||!o)return 1;if(!i&&!a&&!f&&t<e||f&&n&&o&&!i&&!a||s&&n&&o||!u&&o||!c)return-1}return 0}function to(t,e,n,r){for(var i=-1,o=t.length,a=n.length,u=-1,s=e.length,c=Wn(o-a,0),f=Gt(s+c),l=!r;++u<s;)f[u]=e[u];for(;++i<a;)(l||i<o)&&(f[n[i]]=t[i]);for(;c--;)f[u++]=t[i++];return f}function eo(t,e,n,r){for(var i=-1,o=t.length,a=-1,u=n.length,s=-1,c=e.length,f=Wn(o-u,0),l=Gt(f+c),p=!r;++i<f;)l[i]=t[i];for(var d=i;++s<c;)l[d+s]=e[s];for(;++a<u;)(p||i<o)&&(l[d+n[a]]=t[i++]);return l}function no(t,e){var n=-1,r=t.length;for(e||(e=Gt(r));++n<r;)e[n]=t[n];return e}function ro(t,e,n,i){var o=!n;n||(n={});for(var a=-1,u=e.length;++a<u;){var s=e[a],c=i?i(n[s],t[s],s,n,t):r;c===r&&(c=t[s]),o?Mr(n,s,c):Sr(n,s,c)}return n}function io(t,e){return function(n,r){var i=gu(n)?qe:jr,o=e?e():{};return i(n,t,Lo(r,2),o)}}function oo(t){return Ci(function(e,n){var i=-1,o=n.length,a=o>1?n[o-1]:r,u=o>2?n[2]:r;for(a=t.length>3&&"function"==typeof a?(o--,a):r,u&&Ko(n[0],n[1],u)&&(a=o<3?r:a,o=1),e=ee(e);++i<o;){var s=n[i];s&&t(e,s,i,a)}return e})}function ao(t,e){return function(n,r){if(null==n)return n;if(!_u(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=ee(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function uo(t){return function(e,n,r){for(var i=-1,o=ee(e),a=r(e),u=a.length;u--;){var s=a[t?u:++i];if(!1===n(o[s],s,o))break}return e}}function so(t){return function(e){var n=Cn(e=Wu(e))?jn(e):r,i=n?n[0]:e.charAt(0),o=n?Ji(n,1).join(""):e.slice(1);return i[t]()+o}}function co(t){return function(e){return Qe(ks(ms(e).replace(me,"")),t,"")}}function fo(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=hr(t.prototype),r=t.apply(n,e);return Ou(r)?r:n}}function lo(t){return function(e,n,i){var o=ee(e);if(!_u(e)){var a=Lo(n,3);e=is(e),n=function(t){return a(o[t],t,o)}}var u=t(e,n,i);return u>-1?o[a?e[u]:u]:r}}function po(t){return jo(function(e){var n=e.length,i=n,o=mr.prototype.thru;for(t&&e.reverse();i--;){var u=e[i];if("function"!=typeof u)throw new ie(a);if(o&&!s&&"wrapper"==Io(u))var s=new mr([],!0)}for(i=s?i:n;++i<n;){var c=Io(u=e[i]),f="wrapper"==c?No(u):r;s=f&&Zo(f[0])&&f[1]==(x|y|b|C)&&!f[4].length&&1==f[9]?s[Io(f[0])].apply(s,f[3]):1==u.length&&Zo(u)?s[c]():s.thru(u)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&gu(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function ho(t,e,n,i,o,a,u,s,c,f){var l=e&x,p=e&v,d=e&m,h=e&(y|_),g=e&k,b=d?r:fo(t);return function v(){for(var m=arguments.length,y=Gt(m),_=m;_--;)y[_]=arguments[_];if(h)var w=Ro(v),x=function(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}(y,w);if(i&&(y=to(y,i,o,h)),a&&(y=eo(y,a,u,h)),m-=x,h&&m<f){var C=$n(y,w);return wo(t,e,ho,v.placeholder,n,y,C,s,c,f-m)}var k=p?n:this,A=d?k[t]:t;return m=y.length,s?y=function(t,e){for(var n=t.length,i=Vn(e.length,n),o=no(t);i--;){var a=e[i];t[i]=Vo(a,n)?o[a]:r}return t}(y,s):g&&m>1&&y.reverse(),l&&c<m&&(y.length=c),this&&this!==Ee&&this instanceof v&&(A=b||fo(A)),A.apply(k,y)}}function vo(t,e){return function(n,r){return function(t,e,n,r){return Kr(t,function(t,i,o){e(r,n(t),i,o)}),r}(n,t,e(r),{})}}function mo(t,e){return function(n,i){var o;if(n===r&&i===r)return e;if(n!==r&&(o=n),i!==r){if(o===r)return i;"string"==typeof n||"string"==typeof i?(n=Li(n),i=Li(i)):(n=Ri(n),i=Ri(i)),o=t(n,i)}return o}}function go(t){return jo(function(e){return e=Xe(e,vn(Lo())),Ci(function(n){var r=this;return t(e,function(t){return ze(t,r,n)})})})}function yo(t,e){var n=(e=e===r?" ":Li(e)).length;if(n<2)return n?xi(e,t):e;var i=xi(e,Dn(t/Tn(e)));return Cn(e)?Ji(jn(i),0,t).join(""):i.slice(0,t)}function _o(t){return function(e,n,i){return i&&"number"!=typeof i&&Ko(e,n,i)&&(n=i=r),e=Uu(e),n===r?(n=e,e=0):n=Uu(n),function(t,e,n,r){for(var i=-1,o=Wn(Dn((e-t)/(n||1)),0),a=Gt(o);o--;)a[r?o:++i]=t,t+=n;return a}(e,n,i=i===r?e<n?1:-1:Uu(i),t)}}function bo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=zu(e),n=zu(n)),t(e,n)}}function wo(t,e,n,i,o,a,u,s,c,f){var l=e&y;e|=l?b:w,(e&=~(l?w:b))&g||(e&=~(v|m));var p=[t,e,o,l?a:r,l?u:r,l?r:a,l?r:u,s,c,f],d=n.apply(r,p);return Zo(t)&&ra(d,p),d.placeholder=i,aa(d,t,e)}function xo(t){var e=te[t];return function(t,n){if(t=zu(t),(n=null==n?0:Vn(Bu(n),292))&&Hn(t)){var r=(Wu(t)+"e").split("e");return+((r=(Wu(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return e(t)}}var Co=tr&&1/On(new tr([,-0]))[1]==E?function(t){return new tr(t)}:Rs;function ko(t){return function(e){var n=Ho(e);return n==J?kn(e):n==tt?Sn(e):function(t,e){return Xe(e,function(e){return[e,t[e]]})}(e,t(e))}}function Ao(t,e,n,i,o,u,s,f){var l=e&m;if(!l&&"function"!=typeof t)throw new ie(a);var p=i?i.length:0;if(p||(e&=~(b|w),i=o=r),s=s===r?s:Wn(Bu(s),0),f=f===r?f:Bu(f),p-=o?o.length:0,e&w){var d=i,h=o;i=o=r}var k=l?r:No(t),A=[t,e,n,i,o,d,h,u,s,f];if(k&&function(t,e){var n=t[1],r=e[1],i=n|r,o=i<(v|m|x),a=r==x&&n==y||r==x&&n==C&&t[7].length<=e[8]||r==(x|C)&&e[7].length<=e[8]&&n==y;if(!o&&!a)return t;r&v&&(t[2]=e[2],i|=n&v?0:g);var u=e[3];if(u){var s=t[3];t[3]=s?to(s,u,e[4]):u,t[4]=s?$n(t[3],c):e[4]}(u=e[5])&&(s=t[5],t[5]=s?eo(s,u,e[6]):u,t[6]=s?$n(t[5],c):e[6]);(u=e[7])&&(t[7]=u);r&x&&(t[8]=null==t[8]?e[8]:Vn(t[8],e[8]));null==t[9]&&(t[9]=e[9]);t[0]=e[0],t[1]=i}(A,k),t=A[0],e=A[1],n=A[2],i=A[3],o=A[4],!(f=A[9]=A[9]===r?l?0:t.length:Wn(A[9]-p,0))&&e&(y|_)&&(e&=~(y|_)),e&&e!=v)$=e==y||e==_?function(t,e,n){var i=fo(t);return function o(){for(var a=arguments.length,u=Gt(a),s=a,c=Ro(o);s--;)u[s]=arguments[s];var f=a<3&&u[0]!==c&&u[a-1]!==c?[]:$n(u,c);return(a-=f.length)<n?wo(t,e,ho,o.placeholder,r,u,f,r,r,n-a):ze(this&&this!==Ee&&this instanceof o?i:t,this,u)}}(t,e,f):e!=b&&e!=(v|b)||o.length?ho.apply(r,A):function(t,e,n,r){var i=e&v,o=fo(t);return function e(){for(var a=-1,u=arguments.length,s=-1,c=r.length,f=Gt(c+u),l=this&&this!==Ee&&this instanceof e?o:t;++s<c;)f[s]=r[s];for(;u--;)f[s++]=arguments[++a];return ze(l,i?n:this,f)}}(t,e,n,i);else var $=function(t,e,n){var r=e&v,i=fo(t);return function e(){return(this&&this!==Ee&&this instanceof e?i:t).apply(r?n:this,arguments)}}(t,e,n);return aa((k?Oi:ra)($,A),t,e)}function $o(t,e,n,i){return t===r||du(t,ue[n])&&!fe.call(i,n)?e:t}function Oo(t,e,n,i,o,a){return Ou(t)&&Ou(e)&&(a.set(e,t),vi(t,e,r,Oo,a),a.delete(e)),t}function So(t){return Eu(t)?r:t}function To(t,e,n,i,o,a){var u=n&d,s=t.length,c=e.length;if(s!=c&&!(u&&c>s))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var l=-1,p=!0,v=n&h?new wr:r;for(a.set(t,e),a.set(e,t);++l<s;){var m=t[l],g=e[l];if(i)var y=u?i(g,m,l,e,t,a):i(m,g,l,t,e,a);if(y!==r){if(y)continue;p=!1;break}if(v){if(!en(e,function(t,e){if(!gn(v,e)&&(m===t||o(m,t,n,i,a)))return v.push(e)})){p=!1;break}}else if(m!==g&&!o(m,g,n,i,a)){p=!1;break}}return a.delete(t),a.delete(e),p}function jo(t){return oa(ta(t,r,ya),t+"")}function Eo(t){return Xr(t,is,Uo)}function Mo(t){return Xr(t,os,Bo)}var No=rr?function(t){return rr.get(t)}:Rs;function Io(t){for(var e=t.name+"",n=ir[e],r=fe.call(ir,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function Ro(t){return(fe.call(dr,"placeholder")?dr:t).placeholder}function Lo(){var t=dr.iteratee||Es;return t=t===Es?si:t,arguments.length?t(arguments[0],arguments[1]):t}function Po(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function Do(t){for(var e=is(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Yo(i)]}return e}function Fo(t,e){var n=function(t,e){return null==t?r:t[e]}(t,e);return ui(n)?n:r}var Uo=Un?function(t){return null==t?[]:(t=ee(t),Je(Un(t),function(e){return Re.call(t,e)}))}:Hs,Bo=Un?function(t){for(var e=[];t;)Ye(e,Uo(t)),t=Me(t);return e}:Hs,Ho=Yr;function zo(t,e,n){for(var r=-1,i=(e=Vi(e,t)).length,o=!1;++r<i;){var a=fa(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&$u(i)&&Vo(a,i)&&(gu(t)||mu(t))}function qo(t){return"function"!=typeof t.constructor||Xo(t)?{}:hr(Me(t))}function Wo(t){return gu(t)||mu(t)||!!(nn&&t&&t[nn])}function Vo(t,e){var n=typeof t;return!!(e=null==e?M:e)&&("number"==n||"symbol"!=n&&Vt.test(t))&&t>-1&&t%1==0&&t<e}function Ko(t,e,n){if(!Ou(n))return!1;var r=typeof e;return!!("number"==r?_u(n)&&Vo(e,n.length):"string"==r&&e in n)&&du(n[e],t)}function Jo(t,e){if(gu(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Ru(t))||(St.test(t)||!Ot.test(t)||null!=e&&t in ee(e))}function Zo(t){var e=Io(t),n=dr[e];if("function"!=typeof n||!(e in gr.prototype))return!1;if(t===n)return!0;var r=No(n);return!!r&&t===r[0]}(Xn&&Ho(new Xn(new ArrayBuffer(1)))!=ut||Yn&&Ho(new Yn)!=J||Qn&&"[object Promise]"!=Ho(Qn.resolve())||tr&&Ho(new tr)!=tt||er&&Ho(new er)!=it)&&(Ho=function(t){var e=Yr(t),n=e==X?t.constructor:r,i=n?la(n):"";if(i)switch(i){case or:return ut;case ar:return J;case ur:return"[object Promise]";case sr:return tt;case cr:return it}return e});var Go=se?ku:zs;function Xo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||ue)}function Yo(t){return t==t&&!Ou(t)}function Qo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==r||t in ee(n)))}}function ta(t,e,n){return e=Wn(e===r?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Wn(r.length-e,0),a=Gt(o);++i<o;)a[i]=r[e+i];i=-1;for(var u=Gt(e+1);++i<e;)u[i]=r[i];return u[e]=n(a),ze(t,this,u)}}function ea(t,e){return e.length<2?t:Gr(t,ji(e,0,-1))}function na(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var ra=ua(Oi),ia=Pn||function(t,e){return Ee.setTimeout(t,e)},oa=ua(Si);function aa(t,e,n){var r=e+"";return oa(t,function(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Rt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return We(D,function(n){var r="_."+n[0];e&n[1]&&!Ze(t,r)&&t.push(r)}),t.sort()}(function(t){var e=t.match(Lt);return e?e[1].split(Pt):[]}(r),n)))}function ua(t){var e=0,n=0;return function(){var i=Kn(),o=S-(i-n);if(n=i,o>0){if(++e>=O)return arguments[0]}else e=0;return t.apply(r,arguments)}}function sa(t,e){var n=-1,i=t.length,o=i-1;for(e=e===r?i:e;++n<e;){var a=wi(n,o),u=t[a];t[a]=t[n],t[n]=u}return t.length=e,t}var ca=function(t){var e=uu(t,function(t){return n.size===s&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Tt,function(t,n,r,i){e.push(r?i.replace(Ft,"$1"):n||t)}),e});function fa(t){if("string"==typeof t||Ru(t))return t;var e=t+"";return"0"==e&&1/t==-E?"-0":e}function la(t){if(null!=t){try{return ce.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function pa(t){if(t instanceof gr)return t.clone();var e=new mr(t.__wrapped__,t.__chain__);return e.__actions__=no(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var da=Ci(function(t,e){return bu(t)?Dr(t,qr(e,1,bu,!0)):[]}),ha=Ci(function(t,e){var n=Ca(e);return bu(n)&&(n=r),bu(t)?Dr(t,qr(e,1,bu,!0),Lo(n,2)):[]}),va=Ci(function(t,e){var n=Ca(e);return bu(n)&&(n=r),bu(t)?Dr(t,qr(e,1,bu,!0),r,n):[]});function ma(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Bu(n);return i<0&&(i=Wn(r+i,0)),on(t,Lo(e,3),i)}function ga(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var o=i-1;return n!==r&&(o=Bu(n),o=n<0?Wn(i+o,0):Vn(o,i-1)),on(t,Lo(e,3),o,!0)}function ya(t){return(null==t?0:t.length)?qr(t,1):[]}function _a(t){return t&&t.length?t[0]:r}var ba=Ci(function(t){var e=Xe(t,qi);return e.length&&e[0]===t[0]?ni(e):[]}),wa=Ci(function(t){var e=Ca(t),n=Xe(t,qi);return e===Ca(n)?e=r:n.pop(),n.length&&n[0]===t[0]?ni(n,Lo(e,2)):[]}),xa=Ci(function(t){var e=Ca(t),n=Xe(t,qi);return(e="function"==typeof e?e:r)&&n.pop(),n.length&&n[0]===t[0]?ni(n,r,e):[]});function Ca(t){var e=null==t?0:t.length;return e?t[e-1]:r}var ka=Ci(Aa);function Aa(t,e){return t&&t.length&&e&&e.length?_i(t,e):t}var $a=jo(function(t,e){var n=null==t?0:t.length,r=Nr(t,e);return bi(t,Xe(e,function(t){return Vo(t,n)?+t:t}).sort(Qi)),r});function Oa(t){return null==t?t:Gn.call(t)}var Sa=Ci(function(t){return Pi(qr(t,1,bu,!0))}),Ta=Ci(function(t){var e=Ca(t);return bu(e)&&(e=r),Pi(qr(t,1,bu,!0),Lo(e,2))}),ja=Ci(function(t){var e=Ca(t);return e="function"==typeof e?e:r,Pi(qr(t,1,bu,!0),r,e)});function Ea(t){if(!t||!t.length)return[];var e=0;return t=Je(t,function(t){if(bu(t))return e=Wn(t.length,e),!0}),hn(e,function(e){return Xe(t,fn(e))})}function Ma(t,e){if(!t||!t.length)return[];var n=Ea(t);return null==e?n:Xe(n,function(t){return ze(e,r,t)})}var Na=Ci(function(t,e){return bu(t)?Dr(t,e):[]}),Ia=Ci(function(t){return Hi(Je(t,bu))}),Ra=Ci(function(t){var e=Ca(t);return bu(e)&&(e=r),Hi(Je(t,bu),Lo(e,2))}),La=Ci(function(t){var e=Ca(t);return e="function"==typeof e?e:r,Hi(Je(t,bu),r,e)}),Pa=Ci(Ea);var Da=Ci(function(t){var e=t.length,n=e>1?t[e-1]:r;return n="function"==typeof n?(t.pop(),n):r,Ma(t,n)});function Fa(t){var e=dr(t);return e.__chain__=!0,e}function Ua(t,e){return e(t)}var Ba=jo(function(t){var e=t.length,n=e?t[0]:0,i=this.__wrapped__,o=function(e){return Nr(e,t)};return!(e>1||this.__actions__.length)&&i instanceof gr&&Vo(n)?((i=i.slice(n,+n+(e?1:0))).__actions__.push({func:Ua,args:[o],thisArg:r}),new mr(i,this.__chain__).thru(function(t){return e&&!t.length&&t.push(r),t})):this.thru(o)});var Ha=io(function(t,e,n){fe.call(t,n)?++t[n]:Mr(t,n,1)});var za=lo(ma),qa=lo(ga);function Wa(t,e){return(gu(t)?We:Fr)(t,Lo(e,3))}function Va(t,e){return(gu(t)?Ve:Ur)(t,Lo(e,3))}var Ka=io(function(t,e,n){fe.call(t,n)?t[n].push(e):Mr(t,n,[e])});var Ja=Ci(function(t,e,n){var r=-1,i="function"==typeof e,o=_u(t)?Gt(t.length):[];return Fr(t,function(t){o[++r]=i?ze(e,t,n):ri(t,e,n)}),o}),Za=io(function(t,e,n){Mr(t,n,e)});function Ga(t,e){return(gu(t)?Xe:pi)(t,Lo(e,3))}var Xa=io(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]});var Ya=Ci(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ko(t,e[0],e[1])?e=[]:n>2&&Ko(e[0],e[1],e[2])&&(e=[e[0]]),gi(t,qr(e,1),[])}),Qa=Ln||function(){return Ee.Date.now()};function tu(t,e,n){return e=n?r:e,e=t&&null==e?t.length:e,Ao(t,x,r,r,r,r,e)}function eu(t,e){var n;if("function"!=typeof e)throw new ie(a);return t=Bu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=r),n}}var nu=Ci(function(t,e,n){var r=v;if(n.length){var i=$n(n,Ro(nu));r|=b}return Ao(t,r,e,n,i)}),ru=Ci(function(t,e,n){var r=v|m;if(n.length){var i=$n(n,Ro(ru));r|=b}return Ao(e,r,t,n,i)});function iu(t,e,n){var i,o,u,s,c,f,l=0,p=!1,d=!1,h=!0;if("function"!=typeof t)throw new ie(a);function v(e){var n=i,a=o;return i=o=r,l=e,s=t.apply(a,n)}function m(t){var n=t-f;return f===r||n>=e||n<0||d&&t-l>=u}function g(){var t=Qa();if(m(t))return y(t);c=ia(g,function(t){var n=e-(t-f);return d?Vn(n,u-(t-l)):n}(t))}function y(t){return c=r,h&&i?v(t):(i=o=r,s)}function _(){var t=Qa(),n=m(t);if(i=arguments,o=this,f=t,n){if(c===r)return function(t){return l=t,c=ia(g,e),p?v(t):s}(f);if(d)return Zi(c),c=ia(g,e),v(f)}return c===r&&(c=ia(g,e)),s}return e=zu(e)||0,Ou(n)&&(p=!!n.leading,u=(d="maxWait"in n)?Wn(zu(n.maxWait)||0,e):u,h="trailing"in n?!!n.trailing:h),_.cancel=function(){c!==r&&Zi(c),l=0,i=f=o=c=r},_.flush=function(){return c===r?s:y(Qa())},_}var ou=Ci(function(t,e){return Pr(t,1,e)}),au=Ci(function(t,e,n){return Pr(t,zu(e)||0,n)});function uu(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ie(a);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(uu.Cache||br),n}function su(t){if("function"!=typeof t)throw new ie(a);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}uu.Cache=br;var cu=Ki(function(t,e){var n=(e=1==e.length&&gu(e[0])?Xe(e[0],vn(Lo())):Xe(qr(e,1),vn(Lo()))).length;return Ci(function(r){for(var i=-1,o=Vn(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return ze(t,this,r)})}),fu=Ci(function(t,e){var n=$n(e,Ro(fu));return Ao(t,b,r,e,n)}),lu=Ci(function(t,e){var n=$n(e,Ro(lu));return Ao(t,w,r,e,n)}),pu=jo(function(t,e){return Ao(t,C,r,r,r,e)});function du(t,e){return t===e||t!=t&&e!=e}var hu=bo(Qr),vu=bo(function(t,e){return t>=e}),mu=ii(function(){return arguments}())?ii:function(t){return Su(t)&&fe.call(t,"callee")&&!Re.call(t,"callee")},gu=Gt.isArray,yu=Pe?vn(Pe):function(t){return Su(t)&&Yr(t)==at};function _u(t){return null!=t&&$u(t.length)&&!ku(t)}function bu(t){return Su(t)&&_u(t)}var wu=Bn||zs,xu=De?vn(De):function(t){return Su(t)&&Yr(t)==z};function Cu(t){if(!Su(t))return!1;var e=Yr(t);return e==W||e==q||"string"==typeof t.message&&"string"==typeof t.name&&!Eu(t)}function ku(t){if(!Ou(t))return!1;var e=Yr(t);return e==V||e==K||e==B||e==Y}function Au(t){return"number"==typeof t&&t==Bu(t)}function $u(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=M}function Ou(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Su(t){return null!=t&&"object"==typeof t}var Tu=Fe?vn(Fe):function(t){return Su(t)&&Ho(t)==J};function ju(t){return"number"==typeof t||Su(t)&&Yr(t)==Z}function Eu(t){if(!Su(t)||Yr(t)!=X)return!1;var e=Me(t);if(null===e)return!0;var n=fe.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ce.call(n)==he}var Mu=Ue?vn(Ue):function(t){return Su(t)&&Yr(t)==Q};var Nu=Be?vn(Be):function(t){return Su(t)&&Ho(t)==tt};function Iu(t){return"string"==typeof t||!gu(t)&&Su(t)&&Yr(t)==et}function Ru(t){return"symbol"==typeof t||Su(t)&&Yr(t)==nt}var Lu=He?vn(He):function(t){return Su(t)&&$u(t.length)&&!!ke[Yr(t)]};var Pu=bo(li),Du=bo(function(t,e){return t<=e});function Fu(t){if(!t)return[];if(_u(t))return Iu(t)?jn(t):no(t);if(ln&&t[ln])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ln]());var e=Ho(t);return(e==J?kn:e==tt?On:ds)(t)}function Uu(t){return t?(t=zu(t))===E||t===-E?(t<0?-1:1)*N:t==t?t:0:0===t?t:0}function Bu(t){var e=Uu(t),n=e%1;return e==e?n?e-n:e:0}function Hu(t){return t?Ir(Bu(t),0,R):0}function zu(t){if("number"==typeof t)return t;if(Ru(t))return I;if(Ou(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Ou(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Mt,"");var n=zt.test(t);return n||Wt.test(t)?Se(t.slice(2),n?2:8):Ht.test(t)?I:+t}function qu(t){return ro(t,os(t))}function Wu(t){return null==t?"":Li(t)}var Vu=oo(function(t,e){if(Xo(e)||_u(e))ro(e,is(e),t);else for(var n in e)fe.call(e,n)&&Sr(t,n,e[n])}),Ku=oo(function(t,e){ro(e,os(e),t)}),Ju=oo(function(t,e,n,r){ro(e,os(e),t,r)}),Zu=oo(function(t,e,n,r){ro(e,is(e),t,r)}),Gu=jo(Nr);var Xu=Ci(function(t,e){t=ee(t);var n=-1,i=e.length,o=i>2?e[2]:r;for(o&&Ko(e[0],e[1],o)&&(i=1);++n<i;)for(var a=e[n],u=os(a),s=-1,c=u.length;++s<c;){var f=u[s],l=t[f];(l===r||du(l,ue[f])&&!fe.call(t,f))&&(t[f]=a[f])}return t}),Yu=Ci(function(t){return t.push(r,Oo),ze(us,r,t)});function Qu(t,e,n){var i=null==t?r:Gr(t,e);return i===r?n:i}function ts(t,e){return null!=t&&zo(t,e,ei)}var es=vo(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=de.call(e)),t[e]=n},Os(js)),ns=vo(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=de.call(e)),fe.call(t,e)?t[e].push(n):t[e]=[n]},Lo),rs=Ci(ri);function is(t){return _u(t)?Cr(t):ci(t)}function os(t){return _u(t)?Cr(t,!0):fi(t)}var as=oo(function(t,e,n){vi(t,e,n)}),us=oo(function(t,e,n,r){vi(t,e,n,r)}),ss=jo(function(t,e){var n={};if(null==t)return n;var r=!1;e=Xe(e,function(e){return e=Vi(e,t),r||(r=e.length>1),e}),ro(t,Mo(t),n),r&&(n=Rr(n,f|l|p,So));for(var i=e.length;i--;)Di(n,e[i]);return n});var cs=jo(function(t,e){return null==t?{}:function(t,e){return yi(t,e,function(e,n){return ts(t,n)})}(t,e)});function fs(t,e){if(null==t)return{};var n=Xe(Mo(t),function(t){return[t]});return e=Lo(e),yi(t,n,function(t,n){return e(t,n[0])})}var ls=ko(is),ps=ko(os);function ds(t){return null==t?[]:mn(t,is(t))}var hs=co(function(t,e,n){return e=e.toLowerCase(),t+(n?vs(e):e)});function vs(t){return Cs(Wu(t).toLowerCase())}function ms(t){return(t=Wu(t))&&t.replace(Kt,bn).replace(ge,"")}var gs=co(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),ys=co(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),_s=so("toLowerCase");var bs=co(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()});var ws=co(function(t,e,n){return t+(n?" ":"")+Cs(e)});var xs=co(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Cs=so("toUpperCase");function ks(t,e,n){return t=Wu(t),(e=n?r:e)===r?function(t){return we.test(t)}(t)?function(t){return t.match(_e)||[]}(t):function(t){return t.match(Dt)||[]}(t):t.match(e)||[]}var As=Ci(function(t,e){try{return ze(t,r,e)}catch(t){return Cu(t)?t:new Yt(t)}}),$s=jo(function(t,e){return We(e,function(e){e=fa(e),Mr(t,e,nu(t[e],t))}),t});function Os(t){return function(){return t}}var Ss=po(),Ts=po(!0);function js(t){return t}function Es(t){return si("function"==typeof t?t:Rr(t,f))}var Ms=Ci(function(t,e){return function(n){return ri(n,t,e)}}),Ns=Ci(function(t,e){return function(n){return ri(t,n,e)}});function Is(t,e,n){var r=is(e),i=Zr(e,r);null!=n||Ou(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Zr(e,is(e)));var o=!(Ou(n)&&"chain"in n&&!n.chain),a=ku(t);return We(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=no(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Ye([this.value()],arguments))})}),t}function Rs(){}var Ls=go(Xe),Ps=go(Ke),Ds=go(en);function Fs(t){return Jo(t)?fn(fa(t)):function(t){return function(e){return Gr(e,t)}}(t)}var Us=_o(),Bs=_o(!0);function Hs(){return[]}function zs(){return!1}var qs=mo(function(t,e){return t+e},0),Ws=xo("ceil"),Vs=mo(function(t,e){return t/e},1),Ks=xo("floor");var Js,Zs=mo(function(t,e){return t*e},1),Gs=xo("round"),Xs=mo(function(t,e){return t-e},0);return dr.after=function(t,e){if("function"!=typeof e)throw new ie(a);return t=Bu(t),function(){if(--t<1)return e.apply(this,arguments)}},dr.ary=tu,dr.assign=Vu,dr.assignIn=Ku,dr.assignInWith=Ju,dr.assignWith=Zu,dr.at=Gu,dr.before=eu,dr.bind=nu,dr.bindAll=$s,dr.bindKey=ru,dr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return gu(t)?t:[t]},dr.chain=Fa,dr.chunk=function(t,e,n){e=(n?Ko(t,e,n):e===r)?1:Wn(Bu(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,a=0,u=Gt(Dn(i/e));o<i;)u[a++]=ji(t,o,o+=e);return u},dr.compact=function(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i},dr.concat=function(){var t=arguments.length;if(!t)return[];for(var e=Gt(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return Ye(gu(n)?no(n):[n],qr(e,1))},dr.cond=function(t){var e=null==t?0:t.length,n=Lo();return t=e?Xe(t,function(t){if("function"!=typeof t[1])throw new ie(a);return[n(t[0]),t[1]]}):[],Ci(function(n){for(var r=-1;++r<e;){var i=t[r];if(ze(i[0],this,n))return ze(i[1],this,n)}})},dr.conforms=function(t){return function(t){var e=is(t);return function(n){return Lr(n,t,e)}}(Rr(t,f))},dr.constant=Os,dr.countBy=Ha,dr.create=function(t,e){var n=hr(t);return null==e?n:Er(n,e)},dr.curry=function t(e,n,i){var o=Ao(e,y,r,r,r,r,r,n=i?r:n);return o.placeholder=t.placeholder,o},dr.curryRight=function t(e,n,i){var o=Ao(e,_,r,r,r,r,r,n=i?r:n);return o.placeholder=t.placeholder,o},dr.debounce=iu,dr.defaults=Xu,dr.defaultsDeep=Yu,dr.defer=ou,dr.delay=au,dr.difference=da,dr.differenceBy=ha,dr.differenceWith=va,dr.drop=function(t,e,n){var i=null==t?0:t.length;return i?ji(t,(e=n||e===r?1:Bu(e))<0?0:e,i):[]},dr.dropRight=function(t,e,n){var i=null==t?0:t.length;return i?ji(t,0,(e=i-(e=n||e===r?1:Bu(e)))<0?0:e):[]},dr.dropRightWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3),!0,!0):[]},dr.dropWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3),!0):[]},dr.fill=function(t,e,n,i){var o=null==t?0:t.length;return o?(n&&"number"!=typeof n&&Ko(t,e,n)&&(n=0,i=o),function(t,e,n,i){var o=t.length;for((n=Bu(n))<0&&(n=-n>o?0:o+n),(i=i===r||i>o?o:Bu(i))<0&&(i+=o),i=n>i?0:Hu(i);n<i;)t[n++]=e;return t}(t,e,n,i)):[]},dr.filter=function(t,e){return(gu(t)?Je:zr)(t,Lo(e,3))},dr.flatMap=function(t,e){return qr(Ga(t,e),1)},dr.flatMapDeep=function(t,e){return qr(Ga(t,e),E)},dr.flatMapDepth=function(t,e,n){return n=n===r?1:Bu(n),qr(Ga(t,e),n)},dr.flatten=ya,dr.flattenDeep=function(t){return(null==t?0:t.length)?qr(t,E):[]},dr.flattenDepth=function(t,e){return(null==t?0:t.length)?qr(t,e=e===r?1:Bu(e)):[]},dr.flip=function(t){return Ao(t,k)},dr.flow=Ss,dr.flowRight=Ts,dr.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r},dr.functions=function(t){return null==t?[]:Zr(t,is(t))},dr.functionsIn=function(t){return null==t?[]:Zr(t,os(t))},dr.groupBy=Ka,dr.initial=function(t){return(null==t?0:t.length)?ji(t,0,-1):[]},dr.intersection=ba,dr.intersectionBy=wa,dr.intersectionWith=xa,dr.invert=es,dr.invertBy=ns,dr.invokeMap=Ja,dr.iteratee=Es,dr.keyBy=Za,dr.keys=is,dr.keysIn=os,dr.map=Ga,dr.mapKeys=function(t,e){var n={};return e=Lo(e,3),Kr(t,function(t,r,i){Mr(n,e(t,r,i),t)}),n},dr.mapValues=function(t,e){var n={};return e=Lo(e,3),Kr(t,function(t,r,i){Mr(n,r,e(t,r,i))}),n},dr.matches=function(t){return di(Rr(t,f))},dr.matchesProperty=function(t,e){return hi(t,Rr(e,f))},dr.memoize=uu,dr.merge=as,dr.mergeWith=us,dr.method=Ms,dr.methodOf=Ns,dr.mixin=Is,dr.negate=su,dr.nthArg=function(t){return t=Bu(t),Ci(function(e){return mi(e,t)})},dr.omit=ss,dr.omitBy=function(t,e){return fs(t,su(Lo(e)))},dr.once=function(t){return eu(2,t)},dr.orderBy=function(t,e,n,i){return null==t?[]:(gu(e)||(e=null==e?[]:[e]),gu(n=i?r:n)||(n=null==n?[]:[n]),gi(t,e,n))},dr.over=Ls,dr.overArgs=cu,dr.overEvery=Ps,dr.overSome=Ds,dr.partial=fu,dr.partialRight=lu,dr.partition=Xa,dr.pick=cs,dr.pickBy=fs,dr.property=Fs,dr.propertyOf=function(t){return function(e){return null==t?r:Gr(t,e)}},dr.pull=ka,dr.pullAll=Aa,dr.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?_i(t,e,Lo(n,2)):t},dr.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?_i(t,e,r,n):t},dr.pullAt=$a,dr.range=Us,dr.rangeRight=Bs,dr.rearg=pu,dr.reject=function(t,e){return(gu(t)?Je:zr)(t,su(Lo(e,3)))},dr.remove=function(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=Lo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return bi(t,i),n},dr.rest=function(t,e){if("function"!=typeof t)throw new ie(a);return Ci(t,e=e===r?e:Bu(e))},dr.reverse=Oa,dr.sampleSize=function(t,e,n){return e=(n?Ko(t,e,n):e===r)?1:Bu(e),(gu(t)?Ar:Ai)(t,e)},dr.set=function(t,e,n){return null==t?t:$i(t,e,n)},dr.setWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:$i(t,e,n,i)},dr.shuffle=function(t){return(gu(t)?$r:Ti)(t)},dr.slice=function(t,e,n){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Ko(t,e,n)?(e=0,n=i):(e=null==e?0:Bu(e),n=n===r?i:Bu(n)),ji(t,e,n)):[]},dr.sortBy=Ya,dr.sortedUniq=function(t){return t&&t.length?Ii(t):[]},dr.sortedUniqBy=function(t,e){return t&&t.length?Ii(t,Lo(e,2)):[]},dr.split=function(t,e,n){return n&&"number"!=typeof n&&Ko(t,e,n)&&(e=n=r),(n=n===r?R:n>>>0)?(t=Wu(t))&&("string"==typeof e||null!=e&&!Mu(e))&&!(e=Li(e))&&Cn(t)?Ji(jn(t),0,n):t.split(e,n):[]},dr.spread=function(t,e){if("function"!=typeof t)throw new ie(a);return e=null==e?0:Wn(Bu(e),0),Ci(function(n){var r=n[e],i=Ji(n,0,e);return r&&Ye(i,r),ze(t,this,i)})},dr.tail=function(t){var e=null==t?0:t.length;return e?ji(t,1,e):[]},dr.take=function(t,e,n){return t&&t.length?ji(t,0,(e=n||e===r?1:Bu(e))<0?0:e):[]},dr.takeRight=function(t,e,n){var i=null==t?0:t.length;return i?ji(t,(e=i-(e=n||e===r?1:Bu(e)))<0?0:e,i):[]},dr.takeRightWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3),!1,!0):[]},dr.takeWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3)):[]},dr.tap=function(t,e){return e(t),t},dr.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ie(a);return Ou(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),iu(t,e,{leading:r,maxWait:e,trailing:i})},dr.thru=Ua,dr.toArray=Fu,dr.toPairs=ls,dr.toPairsIn=ps,dr.toPath=function(t){return gu(t)?Xe(t,fa):Ru(t)?[t]:no(ca(Wu(t)))},dr.toPlainObject=qu,dr.transform=function(t,e,n){var r=gu(t),i=r||wu(t)||Lu(t);if(e=Lo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Ou(t)&&ku(o)?hr(Me(t)):{}}return(i?We:Kr)(t,function(t,r,i){return e(n,t,r,i)}),n},dr.unary=function(t){return tu(t,1)},dr.union=Sa,dr.unionBy=Ta,dr.unionWith=ja,dr.uniq=function(t){return t&&t.length?Pi(t):[]},dr.uniqBy=function(t,e){return t&&t.length?Pi(t,Lo(e,2)):[]},dr.uniqWith=function(t,e){return e="function"==typeof e?e:r,t&&t.length?Pi(t,r,e):[]},dr.unset=function(t,e){return null==t||Di(t,e)},dr.unzip=Ea,dr.unzipWith=Ma,dr.update=function(t,e,n){return null==t?t:Fi(t,e,Wi(n))},dr.updateWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:Fi(t,e,Wi(n),i)},dr.values=ds,dr.valuesIn=function(t){return null==t?[]:mn(t,os(t))},dr.without=Na,dr.words=ks,dr.wrap=function(t,e){return fu(Wi(e),t)},dr.xor=Ia,dr.xorBy=Ra,dr.xorWith=La,dr.zip=Pa,dr.zipObject=function(t,e){return zi(t||[],e||[],Sr)},dr.zipObjectDeep=function(t,e){return zi(t||[],e||[],$i)},dr.zipWith=Da,dr.entries=ls,dr.entriesIn=ps,dr.extend=Ku,dr.extendWith=Ju,Is(dr,dr),dr.add=qs,dr.attempt=As,dr.camelCase=hs,dr.capitalize=vs,dr.ceil=Ws,dr.clamp=function(t,e,n){return n===r&&(n=e,e=r),n!==r&&(n=(n=zu(n))==n?n:0),e!==r&&(e=(e=zu(e))==e?e:0),Ir(zu(t),e,n)},dr.clone=function(t){return Rr(t,p)},dr.cloneDeep=function(t){return Rr(t,f|p)},dr.cloneDeepWith=function(t,e){return Rr(t,f|p,e="function"==typeof e?e:r)},dr.cloneWith=function(t,e){return Rr(t,p,e="function"==typeof e?e:r)},dr.conformsTo=function(t,e){return null==e||Lr(t,e,is(e))},dr.deburr=ms,dr.defaultTo=function(t,e){return null==t||t!=t?e:t},dr.divide=Vs,dr.endsWith=function(t,e,n){t=Wu(t),e=Li(e);var i=t.length,o=n=n===r?i:Ir(Bu(n),0,i);return(n-=e.length)>=0&&t.slice(n,o)==e},dr.eq=du,dr.escape=function(t){return(t=Wu(t))&&Ct.test(t)?t.replace(wt,wn):t},dr.escapeRegExp=function(t){return(t=Wu(t))&&Et.test(t)?t.replace(jt,"\\$&"):t},dr.every=function(t,e,n){var i=gu(t)?Ke:Br;return n&&Ko(t,e,n)&&(e=r),i(t,Lo(e,3))},dr.find=za,dr.findIndex=ma,dr.findKey=function(t,e){return rn(t,Lo(e,3),Kr)},dr.findLast=qa,dr.findLastIndex=ga,dr.findLastKey=function(t,e){return rn(t,Lo(e,3),Jr)},dr.floor=Ks,dr.forEach=Wa,dr.forEachRight=Va,dr.forIn=function(t,e){return null==t?t:Wr(t,Lo(e,3),os)},dr.forInRight=function(t,e){return null==t?t:Vr(t,Lo(e,3),os)},dr.forOwn=function(t,e){return t&&Kr(t,Lo(e,3))},dr.forOwnRight=function(t,e){return t&&Jr(t,Lo(e,3))},dr.get=Qu,dr.gt=hu,dr.gte=vu,dr.has=function(t,e){return null!=t&&zo(t,e,ti)},dr.hasIn=ts,dr.head=_a,dr.identity=js,dr.includes=function(t,e,n,r){t=_u(t)?t:ds(t),n=n&&!r?Bu(n):0;var i=t.length;return n<0&&(n=Wn(i+n,0)),Iu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&an(t,e,n)>-1},dr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Bu(n);return i<0&&(i=Wn(r+i,0)),an(t,e,i)},dr.inRange=function(t,e,n){return e=Uu(e),n===r?(n=e,e=0):n=Uu(n),function(t,e,n){return t>=Vn(e,n)&&t<Wn(e,n)}(t=zu(t),e,n)},dr.invoke=rs,dr.isArguments=mu,dr.isArray=gu,dr.isArrayBuffer=yu,dr.isArrayLike=_u,dr.isArrayLikeObject=bu,dr.isBoolean=function(t){return!0===t||!1===t||Su(t)&&Yr(t)==H},dr.isBuffer=wu,dr.isDate=xu,dr.isElement=function(t){return Su(t)&&1===t.nodeType&&!Eu(t)},dr.isEmpty=function(t){if(null==t)return!0;if(_u(t)&&(gu(t)||"string"==typeof t||"function"==typeof t.splice||wu(t)||Lu(t)||mu(t)))return!t.length;var e=Ho(t);if(e==J||e==tt)return!t.size;if(Xo(t))return!ci(t).length;for(var n in t)if(fe.call(t,n))return!1;return!0},dr.isEqual=function(t,e){return oi(t,e)},dr.isEqualWith=function(t,e,n){var i=(n="function"==typeof n?n:r)?n(t,e):r;return i===r?oi(t,e,r,n):!!i},dr.isError=Cu,dr.isFinite=function(t){return"number"==typeof t&&Hn(t)},dr.isFunction=ku,dr.isInteger=Au,dr.isLength=$u,dr.isMap=Tu,dr.isMatch=function(t,e){return t===e||ai(t,e,Do(e))},dr.isMatchWith=function(t,e,n){return n="function"==typeof n?n:r,ai(t,e,Do(e),n)},dr.isNaN=function(t){return ju(t)&&t!=+t},dr.isNative=function(t){if(Go(t))throw new Yt(o);return ui(t)},dr.isNil=function(t){return null==t},dr.isNull=function(t){return null===t},dr.isNumber=ju,dr.isObject=Ou,dr.isObjectLike=Su,dr.isPlainObject=Eu,dr.isRegExp=Mu,dr.isSafeInteger=function(t){return Au(t)&&t>=-M&&t<=M},dr.isSet=Nu,dr.isString=Iu,dr.isSymbol=Ru,dr.isTypedArray=Lu,dr.isUndefined=function(t){return t===r},dr.isWeakMap=function(t){return Su(t)&&Ho(t)==it},dr.isWeakSet=function(t){return Su(t)&&Yr(t)==ot},dr.join=function(t,e){return null==t?"":zn.call(t,e)},dr.kebabCase=gs,dr.last=Ca,dr.lastIndexOf=function(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var o=i;return n!==r&&(o=(o=Bu(n))<0?Wn(i+o,0):Vn(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):on(t,sn,o,!0)},dr.lowerCase=ys,dr.lowerFirst=_s,dr.lt=Pu,dr.lte=Du,dr.max=function(t){return t&&t.length?Hr(t,js,Qr):r},dr.maxBy=function(t,e){return t&&t.length?Hr(t,Lo(e,2),Qr):r},dr.mean=function(t){return cn(t,js)},dr.meanBy=function(t,e){return cn(t,Lo(e,2))},dr.min=function(t){return t&&t.length?Hr(t,js,li):r},dr.minBy=function(t,e){return t&&t.length?Hr(t,Lo(e,2),li):r},dr.stubArray=Hs,dr.stubFalse=zs,dr.stubObject=function(){return{}},dr.stubString=function(){return""},dr.stubTrue=function(){return!0},dr.multiply=Zs,dr.nth=function(t,e){return t&&t.length?mi(t,Bu(e)):r},dr.noConflict=function(){return Ee._===this&&(Ee._=ve),this},dr.noop=Rs,dr.now=Qa,dr.pad=function(t,e,n){t=Wu(t);var r=(e=Bu(e))?Tn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return yo(Fn(i),n)+t+yo(Dn(i),n)},dr.padEnd=function(t,e,n){t=Wu(t);var r=(e=Bu(e))?Tn(t):0;return e&&r<e?t+yo(e-r,n):t},dr.padStart=function(t,e,n){t=Wu(t);var r=(e=Bu(e))?Tn(t):0;return e&&r<e?yo(e-r,n)+t:t},dr.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),Jn(Wu(t).replace(Nt,""),e||0)},dr.random=function(t,e,n){if(n&&"boolean"!=typeof n&&Ko(t,e,n)&&(e=n=r),n===r&&("boolean"==typeof e?(n=e,e=r):"boolean"==typeof t&&(n=t,t=r)),t===r&&e===r?(t=0,e=1):(t=Uu(t),e===r?(e=t,t=0):e=Uu(e)),t>e){var i=t;t=e,e=i}if(n||t%1||e%1){var o=Zn();return Vn(t+o*(e-t+Oe("1e-"+((o+"").length-1))),e)}return wi(t,e)},dr.reduce=function(t,e,n){var r=gu(t)?Qe:pn,i=arguments.length<3;return r(t,Lo(e,4),n,i,Fr)},dr.reduceRight=function(t,e,n){var r=gu(t)?tn:pn,i=arguments.length<3;return r(t,Lo(e,4),n,i,Ur)},dr.repeat=function(t,e,n){return e=(n?Ko(t,e,n):e===r)?1:Bu(e),xi(Wu(t),e)},dr.replace=function(){var t=arguments,e=Wu(t[0]);return t.length<3?e:e.replace(t[1],t[2])},dr.result=function(t,e,n){var i=-1,o=(e=Vi(e,t)).length;for(o||(o=1,t=r);++i<o;){var a=null==t?r:t[fa(e[i])];a===r&&(i=o,a=n),t=ku(a)?a.call(t):a}return t},dr.round=Gs,dr.runInContext=t,dr.sample=function(t){return(gu(t)?kr:ki)(t)},dr.size=function(t){if(null==t)return 0;if(_u(t))return Iu(t)?Tn(t):t.length;var e=Ho(t);return e==J||e==tt?t.size:ci(t).length},dr.snakeCase=bs,dr.some=function(t,e,n){var i=gu(t)?en:Ei;return n&&Ko(t,e,n)&&(e=r),i(t,Lo(e,3))},dr.sortedIndex=function(t,e){return Mi(t,e)},dr.sortedIndexBy=function(t,e,n){return Ni(t,e,Lo(n,2))},dr.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var r=Mi(t,e);if(r<n&&du(t[r],e))return r}return-1},dr.sortedLastIndex=function(t,e){return Mi(t,e,!0)},dr.sortedLastIndexBy=function(t,e,n){return Ni(t,e,Lo(n,2),!0)},dr.sortedLastIndexOf=function(t,e){if(null==t?0:t.length){var n=Mi(t,e,!0)-1;if(du(t[n],e))return n}return-1},dr.startCase=ws,dr.startsWith=function(t,e,n){return t=Wu(t),n=null==n?0:Ir(Bu(n),0,t.length),e=Li(e),t.slice(n,n+e.length)==e},dr.subtract=Xs,dr.sum=function(t){return t&&t.length?dn(t,js):0},dr.sumBy=function(t,e){return t&&t.length?dn(t,Lo(e,2)):0},dr.template=function(t,e,n){var i=dr.templateSettings;n&&Ko(t,e,n)&&(e=r),t=Wu(t),e=Ju({},e,i,$o);var o,a,u=Ju({},e.imports,i.imports,$o),s=is(u),c=mn(u,s),f=0,l=e.interpolate||Jt,p="__p += '",d=ne((e.escape||Jt).source+"|"+l.source+"|"+(l===$t?Ut:Jt).source+"|"+(e.evaluate||Jt).source+"|$","g"),h="//# sourceURL="+(fe.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++Ce+"]")+"\n";t.replace(d,function(e,n,r,i,u,s){return r||(r=i),p+=t.slice(f,s).replace(Zt,xn),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),u&&(a=!0,p+="';\n"+u+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=s+e.length,e}),p+="';\n";var v=fe.call(e,"variable")&&e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(gt,""):p).replace(yt,"$1").replace(_t,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var m=As(function(){return Qt(s,h+"return "+p).apply(r,c)});if(m.source=p,Cu(m))throw m;return m},dr.times=function(t,e){if((t=Bu(t))<1||t>M)return[];var n=R,r=Vn(t,R);e=Lo(e),t-=R;for(var i=hn(r,e);++n<t;)e(n);return i},dr.toFinite=Uu,dr.toInteger=Bu,dr.toLength=Hu,dr.toLower=function(t){return Wu(t).toLowerCase()},dr.toNumber=zu,dr.toSafeInteger=function(t){return t?Ir(Bu(t),-M,M):0===t?t:0},dr.toString=Wu,dr.toUpper=function(t){return Wu(t).toUpperCase()},dr.trim=function(t,e,n){if((t=Wu(t))&&(n||e===r))return t.replace(Mt,"");if(!t||!(e=Li(e)))return t;var i=jn(t),o=jn(e);return Ji(i,yn(i,o),_n(i,o)+1).join("")},dr.trimEnd=function(t,e,n){if((t=Wu(t))&&(n||e===r))return t.replace(It,"");if(!t||!(e=Li(e)))return t;var i=jn(t);return Ji(i,0,_n(i,jn(e))+1).join("")},dr.trimStart=function(t,e,n){if((t=Wu(t))&&(n||e===r))return t.replace(Nt,"");if(!t||!(e=Li(e)))return t;var i=jn(t);return Ji(i,yn(i,jn(e))).join("")},dr.truncate=function(t,e){var n=A,i=$;if(Ou(e)){var o="separator"in e?e.separator:o;n="length"in e?Bu(e.length):n,i="omission"in e?Li(e.omission):i}var a=(t=Wu(t)).length;if(Cn(t)){var u=jn(t);a=u.length}if(n>=a)return t;var s=n-Tn(i);if(s<1)return i;var c=u?Ji(u,0,s).join(""):t.slice(0,s);if(o===r)return c+i;if(u&&(s+=c.length-s),Mu(o)){if(t.slice(s).search(o)){var f,l=c;for(o.global||(o=ne(o.source,Wu(Bt.exec(o))+"g")),o.lastIndex=0;f=o.exec(l);)var p=f.index;c=c.slice(0,p===r?s:p)}}else if(t.indexOf(Li(o),s)!=s){var d=c.lastIndexOf(o);d>-1&&(c=c.slice(0,d))}return c+i},dr.unescape=function(t){return(t=Wu(t))&&xt.test(t)?t.replace(bt,En):t},dr.uniqueId=function(t){var e=++le;return Wu(t)+e},dr.upperCase=xs,dr.upperFirst=Cs,dr.each=Wa,dr.eachRight=Va,dr.first=_a,Is(dr,(Js={},Kr(dr,function(t,e){fe.call(dr.prototype,e)||(Js[e]=t)}),Js),{chain:!1}),dr.VERSION="4.17.15",We(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){dr[t].placeholder=dr}),We(["drop","take"],function(t,e){gr.prototype[t]=function(n){n=n===r?1:Wn(Bu(n),0);var i=this.__filtered__&&!e?new gr(this):this.clone();return i.__filtered__?i.__takeCount__=Vn(n,i.__takeCount__):i.__views__.push({size:Vn(n,R),type:t+(i.__dir__<0?"Right":"")}),i},gr.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),We(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==T||3==n;gr.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Lo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),We(["head","last"],function(t,e){var n="take"+(e?"Right":"");gr.prototype[t]=function(){return this[n](1).value()[0]}}),We(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");gr.prototype[t]=function(){return this.__filtered__?new gr(this):this[n](1)}}),gr.prototype.compact=function(){return this.filter(js)},gr.prototype.find=function(t){return this.filter(t).head()},gr.prototype.findLast=function(t){return this.reverse().find(t)},gr.prototype.invokeMap=Ci(function(t,e){return"function"==typeof t?new gr(this):this.map(function(n){return ri(n,t,e)})}),gr.prototype.reject=function(t){return this.filter(su(Lo(t)))},gr.prototype.slice=function(t,e){t=Bu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new gr(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==r&&(n=(e=Bu(e))<0?n.dropRight(-e):n.take(e-t)),n)},gr.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},gr.prototype.toArray=function(){return this.take(R)},Kr(gr.prototype,function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=dr[i?"take"+("last"==e?"Right":""):e],a=i||/^find/.test(e);o&&(dr.prototype[e]=function(){var e=this.__wrapped__,u=i?[1]:arguments,s=e instanceof gr,c=u[0],f=s||gu(e),l=function(t){var e=o.apply(dr,Ye([t],u));return i&&p?e[0]:e};f&&n&&"function"==typeof c&&1!=c.length&&(s=f=!1);var p=this.__chain__,d=!!this.__actions__.length,h=a&&!p,v=s&&!d;if(!a&&f){e=v?e:new gr(this);var m=t.apply(e,u);return m.__actions__.push({func:Ua,args:[l],thisArg:r}),new mr(m,p)}return h&&v?t.apply(this,u):(m=this.thru(l),h?i?m.value()[0]:m.value():m)})}),We(["pop","push","shift","sort","splice","unshift"],function(t){var e=oe[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);dr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(gu(i)?i:[],t)}return this[n](function(n){return e.apply(gu(n)?n:[],t)})}}),Kr(gr.prototype,function(t,e){var n=dr[e];if(n){var r=n.name+"";fe.call(ir,r)||(ir[r]=[]),ir[r].push({name:e,func:n})}}),ir[ho(r,m).name]=[{name:"wrapper",func:r}],gr.prototype.clone=function(){var t=new gr(this.__wrapped__);return t.__actions__=no(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=no(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=no(this.__views__),t},gr.prototype.reverse=function(){if(this.__filtered__){var t=new gr(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},gr.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=gu(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Vn(e,t+a);break;case"takeRight":t=Wn(t,e-a)}}return{start:t,end:e}}(0,i,this.__views__),a=o.start,u=o.end,s=u-a,c=r?u:a-1,f=this.__iteratees__,l=f.length,p=0,d=Vn(s,this.__takeCount__);if(!n||!r&&i==s&&d==s)return Bi(t,this.__actions__);var h=[];t:for(;s--&&p<d;){for(var v=-1,m=t[c+=e];++v<l;){var g=f[v],y=g.iteratee,_=g.type,b=y(m);if(_==j)m=b;else if(!b){if(_==T)continue t;break t}}h[p++]=m}return h},dr.prototype.at=Ba,dr.prototype.chain=function(){return Fa(this)},dr.prototype.commit=function(){return new mr(this.value(),this.__chain__)},dr.prototype.next=function(){this.__values__===r&&(this.__values__=Fu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?r:this.__values__[this.__index__++]}},dr.prototype.plant=function(t){for(var e,n=this;n instanceof vr;){var i=pa(n);i.__index__=0,i.__values__=r,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e},dr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof gr){var e=t;return this.__actions__.length&&(e=new gr(this)),(e=e.reverse()).__actions__.push({func:Ua,args:[Oa],thisArg:r}),new mr(e,this.__chain__)}return this.thru(Oa)},dr.prototype.toJSON=dr.prototype.valueOf=dr.prototype.value=function(){return Bi(this.__wrapped__,this.__actions__)},dr.prototype.first=dr.prototype.head,ln&&(dr.prototype[ln]=function(){return this}),dr}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Ee._=Mn,define(function(){return Mn})):Ne?((Ne.exports=Mn)._=Mn,Me._=Mn):Ee._=Mn}).call(this)}).call(this,n(5),n(36)(t))},function(t,e,n){"use strict";e.__esModule=!0,e.extend=u,e.indexOf=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},e.escapeExpression=function(t){if("string"!=typeof t){if(t&&t.toHTML)return t.toHTML();if(null==t)return"";if(!t)return t+"";t=""+t}if(!o.test(t))return t;return t.replace(i,a)},e.isEmpty=function(t){return!t&&0!==t||!(!f(t)||0!==t.length)},e.createFrame=function(t){var e=u({},t);return e._parent=t,e},e.blockParams=function(t,e){return t.path=e,t},e.appendContextPath=function(t,e){return(t?t+".":"")+e};var r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},i=/[&<>"'`=]/g,o=/[&<>"'`=]/;function a(t){return r[t]}function u(t){for(var e=1;e<arguments.length;e++)for(var n in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],n)&&(t[n]=arguments[e][n]);return t}var s=Object.prototype.toString;e.toString=s;var c=function(t){return"function"==typeof t};c(/x/)&&(e.isFunction=c=function(t){return"function"==typeof t&&"[object Function]"===s.call(t)}),e.isFunction=c;var f=Array.isArray||function(t){return!(!t||"object"!=typeof t)&&"[object Array]"===s.call(t)};e.isArray=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(19).default.create({headers:{requesttoken:OC.requestToken}});e.default=r},function(t,e,n){"use strict";(function(t,n){
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/js/",n(n.s=62)}([function(t,e,n){"use strict";var r=n(9),i=n(21),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function u(t){return null!==t&&"object"==typeof t}function s(t){return"[object Function]"===o.call(t)}function c(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}t.exports={isArray:a,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:i,isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:u,isUndefined:function(t){return void 0===t},isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:s,isStream:function(t){return u(t)&&s(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:c,merge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]=n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return e},deepMerge:function t(){var e={};function n(n,r){"object"==typeof e[r]&&"object"==typeof n?e[r]=t(e[r],n):e[r]="object"==typeof n?t({},n):n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return e},extend:function(t,e,n){return c(e,function(e,i){t[i]=n&&"function"==typeof e?r(e,n):e}),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,n){(function(t,n){(function(){var r,i=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",u="__lodash_hash_undefined__",s=500,c="__lodash_placeholder__",f=1,l=2,p=4,d=1,h=2,v=1,m=2,g=4,y=8,_=16,b=32,w=64,x=128,C=256,k=512,A=30,$="...",O=800,S=16,T=1,j=2,E=1/0,M=9007199254740991,N=17976931348623157e292,I=NaN,R=4294967295,L=R-1,P=R>>>1,D=[["ary",x],["bind",v],["bindKey",m],["curry",y],["curryRight",_],["flip",k],["partial",b],["partialRight",w],["rearg",C]],F="[object Arguments]",U="[object Array]",B="[object AsyncFunction]",H="[object Boolean]",z="[object Date]",q="[object DOMException]",W="[object Error]",V="[object Function]",K="[object GeneratorFunction]",J="[object Map]",Z="[object Number]",G="[object Null]",X="[object Object]",Y="[object Proxy]",Q="[object RegExp]",tt="[object Set]",et="[object String]",nt="[object Symbol]",rt="[object Undefined]",it="[object WeakMap]",ot="[object WeakSet]",at="[object ArrayBuffer]",ut="[object DataView]",st="[object Float32Array]",ct="[object Float64Array]",ft="[object Int8Array]",lt="[object Int16Array]",pt="[object Int32Array]",dt="[object Uint8Array]",ht="[object Uint8ClampedArray]",vt="[object Uint16Array]",mt="[object Uint32Array]",gt=/\b__p \+= '';/g,yt=/\b(__p \+=) '' \+/g,_t=/(__e\(.*?\)|\b__t\)) \+\n'';/g,bt=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,xt=RegExp(bt.source),Ct=RegExp(wt.source),kt=/<%-([\s\S]+?)%>/g,At=/<%([\s\S]+?)%>/g,$t=/<%=([\s\S]+?)%>/g,Ot=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,St=/^\w*$/,Tt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,jt=/[\\^$.*+?()[\]{}|]/g,Et=RegExp(jt.source),Mt=/^\s+|\s+$/g,Nt=/^\s+/,It=/\s+$/,Rt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Lt=/\{\n\/\* \[wrapped with (.+)\] \*/,Pt=/,? & /,Dt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ft=/\\(\\)?/g,Ut=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Bt=/\w*$/,Ht=/^[-+]0x[0-9a-f]+$/i,zt=/^0b[01]+$/i,qt=/^\[object .+?Constructor\]$/,Wt=/^0o[0-7]+$/i,Vt=/^(?:0|[1-9]\d*)$/,Kt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Jt=/($^)/,Zt=/['\n\r\u2028\u2029\\]/g,Gt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Xt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Yt="[\\ud800-\\udfff]",Qt="["+Xt+"]",te="["+Gt+"]",ee="\\d+",ne="[\\u2700-\\u27bf]",re="[a-z\\xdf-\\xf6\\xf8-\\xff]",ie="[^\\ud800-\\udfff"+Xt+ee+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",oe="\\ud83c[\\udffb-\\udfff]",ae="[^\\ud800-\\udfff]",ue="(?:\\ud83c[\\udde6-\\uddff]){2}",se="[\\ud800-\\udbff][\\udc00-\\udfff]",ce="[A-Z\\xc0-\\xd6\\xd8-\\xde]",fe="(?:"+re+"|"+ie+")",le="(?:"+ce+"|"+ie+")",pe="(?:"+te+"|"+oe+")"+"?",de="[\\ufe0e\\ufe0f]?"+pe+("(?:\\u200d(?:"+[ae,ue,se].join("|")+")[\\ufe0e\\ufe0f]?"+pe+")*"),he="(?:"+[ne,ue,se].join("|")+")"+de,ve="(?:"+[ae+te+"?",te,ue,se,Yt].join("|")+")",me=RegExp("['’]","g"),ge=RegExp(te,"g"),ye=RegExp(oe+"(?="+oe+")|"+ve+de,"g"),_e=RegExp([ce+"?"+re+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Qt,ce,"$"].join("|")+")",le+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Qt,ce+fe,"$"].join("|")+")",ce+"?"+fe+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ce+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ee,he].join("|"),"g"),be=RegExp("[\\u200d\\ud800-\\udfff"+Gt+"\\ufe0e\\ufe0f]"),we=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xe=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ce=-1,ke={};ke[st]=ke[ct]=ke[ft]=ke[lt]=ke[pt]=ke[dt]=ke[ht]=ke[vt]=ke[mt]=!0,ke[F]=ke[U]=ke[at]=ke[H]=ke[ut]=ke[z]=ke[W]=ke[V]=ke[J]=ke[Z]=ke[X]=ke[Q]=ke[tt]=ke[et]=ke[it]=!1;var Ae={};Ae[F]=Ae[U]=Ae[at]=Ae[ut]=Ae[H]=Ae[z]=Ae[st]=Ae[ct]=Ae[ft]=Ae[lt]=Ae[pt]=Ae[J]=Ae[Z]=Ae[X]=Ae[Q]=Ae[tt]=Ae[et]=Ae[nt]=Ae[dt]=Ae[ht]=Ae[vt]=Ae[mt]=!0,Ae[W]=Ae[V]=Ae[it]=!1;var $e={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Oe=parseFloat,Se=parseInt,Te="object"==typeof t&&t&&t.Object===Object&&t,je="object"==typeof self&&self&&self.Object===Object&&self,Ee=Te||je||Function("return this")(),Me=e&&!e.nodeType&&e,Ne=Me&&"object"==typeof n&&n&&!n.nodeType&&n,Ie=Ne&&Ne.exports===Me,Re=Ie&&Te.process,Le=function(){try{var t=Ne&&Ne.require&&Ne.require("util").types;return t||Re&&Re.binding&&Re.binding("util")}catch(t){}}(),Pe=Le&&Le.isArrayBuffer,De=Le&&Le.isDate,Fe=Le&&Le.isMap,Ue=Le&&Le.isRegExp,Be=Le&&Le.isSet,He=Le&&Le.isTypedArray;function ze(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function qe(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function We(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function Ve(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function Ke(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function Je(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function Ze(t,e){return!!(null==t?0:t.length)&&an(t,e,0)>-1}function Ge(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function Xe(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function Ye(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function Qe(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function tn(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function en(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}var nn=fn("length");function rn(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function on(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function an(t,e,n){return e==e?function(t,e,n){var r=n-1,i=t.length;for(;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):on(t,sn,n)}function un(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function sn(t){return t!=t}function cn(t,e){var n=null==t?0:t.length;return n?dn(t,e)/n:I}function fn(t){return function(e){return null==e?r:e[t]}}function ln(t){return function(e){return null==t?r:t[e]}}function pn(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function dn(t,e){for(var n,i=-1,o=t.length;++i<o;){var a=e(t[i]);a!==r&&(n=n===r?a:n+a)}return n}function hn(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function vn(t){return function(e){return t(e)}}function mn(t,e){return Xe(e,function(e){return t[e]})}function gn(t,e){return t.has(e)}function yn(t,e){for(var n=-1,r=t.length;++n<r&&an(e,t[n],0)>-1;);return n}function _n(t,e){for(var n=t.length;n--&&an(e,t[n],0)>-1;);return n}var bn=ln({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),wn=ln({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function xn(t){return"\\"+$e[t]}function Cn(t){return be.test(t)}function kn(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function An(t,e){return function(n){return t(e(n))}}function $n(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==c||(t[n]=c,o[i++]=n)}return o}function On(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function Sn(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function Tn(t){return Cn(t)?function(t){var e=ye.lastIndex=0;for(;ye.test(t);)++e;return e}(t):nn(t)}function jn(t){return Cn(t)?function(t){return t.match(ye)||[]}(t):function(t){return t.split("")}(t)}var En=ln({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"});var Mn=function t(e){var n,Gt=(e=null==e?Ee:Mn.defaults(Ee.Object(),e,Mn.pick(Ee,xe))).Array,Xt=e.Date,Yt=e.Error,Qt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,ie=e.TypeError,oe=Gt.prototype,ae=Qt.prototype,ue=ee.prototype,se=e["__core-js_shared__"],ce=ae.toString,fe=ue.hasOwnProperty,le=0,pe=(n=/[^.]+$/.exec(se&&se.keys&&se.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",de=ue.toString,he=ce.call(ee),ve=Ee._,ye=ne("^"+ce.call(fe).replace(jt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),be=Ie?e.Buffer:r,$e=e.Symbol,Te=e.Uint8Array,je=be?be.allocUnsafe:r,Me=An(ee.getPrototypeOf,ee),Ne=ee.create,Re=ue.propertyIsEnumerable,Le=oe.splice,nn=$e?$e.isConcatSpreadable:r,ln=$e?$e.iterator:r,Nn=$e?$e.toStringTag:r,In=function(){try{var t=Fo(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),Rn=e.clearTimeout!==Ee.clearTimeout&&e.clearTimeout,Ln=Xt&&Xt.now!==Ee.Date.now&&Xt.now,Pn=e.setTimeout!==Ee.setTimeout&&e.setTimeout,Dn=te.ceil,Fn=te.floor,Un=ee.getOwnPropertySymbols,Bn=be?be.isBuffer:r,Hn=e.isFinite,zn=oe.join,qn=An(ee.keys,ee),Wn=te.max,Vn=te.min,Kn=Xt.now,Jn=e.parseInt,Zn=te.random,Gn=oe.reverse,Xn=Fo(e,"DataView"),Yn=Fo(e,"Map"),Qn=Fo(e,"Promise"),tr=Fo(e,"Set"),er=Fo(e,"WeakMap"),nr=Fo(ee,"create"),rr=er&&new er,ir={},or=la(Xn),ar=la(Yn),ur=la(Qn),sr=la(tr),cr=la(er),fr=$e?$e.prototype:r,lr=fr?fr.valueOf:r,pr=fr?fr.toString:r;function dr(t){if(Su(t)&&!gu(t)&&!(t instanceof gr)){if(t instanceof mr)return t;if(fe.call(t,"__wrapped__"))return pa(t)}return new mr(t)}var hr=function(){function t(){}return function(e){if(!Ou(e))return{};if(Ne)return Ne(e);t.prototype=e;var n=new t;return t.prototype=r,n}}();function vr(){}function mr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=r}function gr(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=R,this.__views__=[]}function yr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function _r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function br(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function wr(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new br;++e<n;)this.add(t[e])}function xr(t){var e=this.__data__=new _r(t);this.size=e.size}function Cr(t,e){var n=gu(t),r=!n&&mu(t),i=!n&&!r&&wu(t),o=!n&&!r&&!i&&Lu(t),a=n||r||i||o,u=a?hn(t.length,re):[],s=u.length;for(var c in t)!e&&!fe.call(t,c)||a&&("length"==c||i&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Vo(c,s))||u.push(c);return u}function kr(t){var e=t.length;return e?t[wi(0,e-1)]:r}function Ar(t,e){return sa(no(t),Ir(e,0,t.length))}function $r(t){return sa(no(t))}function Or(t,e,n){(n===r||du(t[e],n))&&(n!==r||e in t)||Mr(t,e,n)}function Sr(t,e,n){var i=t[e];fe.call(t,e)&&du(i,n)&&(n!==r||e in t)||Mr(t,e,n)}function Tr(t,e){for(var n=t.length;n--;)if(du(t[n][0],e))return n;return-1}function jr(t,e,n,r){return Fr(t,function(t,i,o){e(r,t,n(t),o)}),r}function Er(t,e){return t&&ro(e,is(e),t)}function Mr(t,e,n){"__proto__"==e&&In?In(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Nr(t,e){for(var n=-1,i=e.length,o=Gt(i),a=null==t;++n<i;)o[n]=a?r:Qu(t,e[n]);return o}function Ir(t,e,n){return t==t&&(n!==r&&(t=t<=n?t:n),e!==r&&(t=t>=e?t:e)),t}function Rr(t,e,n,i,o,a){var u,s=e&f,c=e&l,d=e&p;if(n&&(u=o?n(t,i,o,a):n(t)),u!==r)return u;if(!Ou(t))return t;var h=gu(t);if(h){if(u=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&fe.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!s)return no(t,u)}else{var v=Ho(t),m=v==V||v==K;if(wu(t))return Gi(t,s);if(v==X||v==F||m&&!o){if(u=c||m?{}:qo(t),!s)return c?function(t,e){return ro(t,Bo(t),e)}(t,function(t,e){return t&&ro(e,os(e),t)}(u,t)):function(t,e){return ro(t,Uo(t),e)}(t,Er(u,t))}else{if(!Ae[v])return o?t:{};u=function(t,e,n){var r=t.constructor;switch(e){case at:return Xi(t);case H:case z:return new r(+t);case ut:return function(t,e){var n=e?Xi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case st:case ct:case ft:case lt:case pt:case dt:case ht:case vt:case mt:return Yi(t,n);case J:return new r;case Z:case et:return new r(t);case Q:return function(t){var e=new t.constructor(t.source,Bt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case tt:return new r;case nt:return i=t,lr?ee(lr.call(i)):{}}var i}(t,v,s)}}a||(a=new xr);var g=a.get(t);if(g)return g;a.set(t,u),Nu(t)?t.forEach(function(r){u.add(Rr(r,e,n,r,t,a))}):Tu(t)&&t.forEach(function(r,i){u.set(i,Rr(r,e,n,i,t,a))});var y=h?r:(d?c?Mo:Eo:c?os:is)(t);return We(y||t,function(r,i){y&&(r=t[i=r]),Sr(u,i,Rr(r,e,n,i,t,a))}),u}function Lr(t,e,n){var i=n.length;if(null==t)return!i;for(t=ee(t);i--;){var o=n[i],a=e[o],u=t[o];if(u===r&&!(o in t)||!a(u))return!1}return!0}function Pr(t,e,n){if("function"!=typeof t)throw new ie(a);return ia(function(){t.apply(r,n)},e)}function Dr(t,e,n,r){var o=-1,a=Ze,u=!0,s=t.length,c=[],f=e.length;if(!s)return c;n&&(e=Xe(e,vn(n))),r?(a=Ge,u=!1):e.length>=i&&(a=gn,u=!1,e=new wr(e));t:for(;++o<s;){var l=t[o],p=null==n?l:n(l);if(l=r||0!==l?l:0,u&&p==p){for(var d=f;d--;)if(e[d]===p)continue t;c.push(l)}else a(e,p,r)||c.push(l)}return c}dr.templateSettings={escape:kt,evaluate:At,interpolate:$t,variable:"",imports:{_:dr}},dr.prototype=vr.prototype,dr.prototype.constructor=dr,mr.prototype=hr(vr.prototype),mr.prototype.constructor=mr,gr.prototype=hr(vr.prototype),gr.prototype.constructor=gr,yr.prototype.clear=function(){this.__data__=nr?nr(null):{},this.size=0},yr.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},yr.prototype.get=function(t){var e=this.__data__;if(nr){var n=e[t];return n===u?r:n}return fe.call(e,t)?e[t]:r},yr.prototype.has=function(t){var e=this.__data__;return nr?e[t]!==r:fe.call(e,t)},yr.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nr&&e===r?u:e,this},_r.prototype.clear=function(){this.__data__=[],this.size=0},_r.prototype.delete=function(t){var e=this.__data__,n=Tr(e,t);return!(n<0)&&(n==e.length-1?e.pop():Le.call(e,n,1),--this.size,!0)},_r.prototype.get=function(t){var e=this.__data__,n=Tr(e,t);return n<0?r:e[n][1]},_r.prototype.has=function(t){return Tr(this.__data__,t)>-1},_r.prototype.set=function(t,e){var n=this.__data__,r=Tr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},br.prototype.clear=function(){this.size=0,this.__data__={hash:new yr,map:new(Yn||_r),string:new yr}},br.prototype.delete=function(t){var e=Po(this,t).delete(t);return this.size-=e?1:0,e},br.prototype.get=function(t){return Po(this,t).get(t)},br.prototype.has=function(t){return Po(this,t).has(t)},br.prototype.set=function(t,e){var n=Po(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},wr.prototype.add=wr.prototype.push=function(t){return this.__data__.set(t,u),this},wr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.clear=function(){this.__data__=new _r,this.size=0},xr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},xr.prototype.get=function(t){return this.__data__.get(t)},xr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof _r){var r=n.__data__;if(!Yn||r.length<i-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new br(r)}return n.set(t,e),this.size=n.size,this};var Fr=ao(Kr),Ur=ao(Jr,!0);function Br(t,e){var n=!0;return Fr(t,function(t,r,i){return n=!!e(t,r,i)}),n}function Hr(t,e,n){for(var i=-1,o=t.length;++i<o;){var a=t[i],u=e(a);if(null!=u&&(s===r?u==u&&!Ru(u):n(u,s)))var s=u,c=a}return c}function zr(t,e){var n=[];return Fr(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function qr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=Wo),i||(i=[]);++o<a;){var u=t[o];e>0&&n(u)?e>1?qr(u,e-1,n,r,i):Ye(i,u):r||(i[i.length]=u)}return i}var Wr=uo(),Vr=uo(!0);function Kr(t,e){return t&&Wr(t,e,is)}function Jr(t,e){return t&&Vr(t,e,is)}function Zr(t,e){return Je(e,function(e){return ku(t[e])})}function Gr(t,e){for(var n=0,i=(e=Vi(e,t)).length;null!=t&&n<i;)t=t[fa(e[n++])];return n&&n==i?t:r}function Xr(t,e,n){var r=e(t);return gu(t)?r:Ye(r,n(t))}function Yr(t){return null==t?t===r?rt:G:Nn&&Nn in ee(t)?function(t){var e=fe.call(t,Nn),n=t[Nn];try{t[Nn]=r;var i=!0}catch(t){}var o=de.call(t);i&&(e?t[Nn]=n:delete t[Nn]);return o}(t):function(t){return de.call(t)}(t)}function Qr(t,e){return t>e}function ti(t,e){return null!=t&&fe.call(t,e)}function ei(t,e){return null!=t&&e in ee(t)}function ni(t,e,n){for(var i=n?Ge:Ze,o=t[0].length,a=t.length,u=a,s=Gt(a),c=1/0,f=[];u--;){var l=t[u];u&&e&&(l=Xe(l,vn(e))),c=Vn(l.length,c),s[u]=!n&&(e||o>=120&&l.length>=120)?new wr(u&&l):r}l=t[0];var p=-1,d=s[0];t:for(;++p<o&&f.length<c;){var h=l[p],v=e?e(h):h;if(h=n||0!==h?h:0,!(d?gn(d,v):i(f,v,n))){for(u=a;--u;){var m=s[u];if(!(m?gn(m,v):i(t[u],v,n)))continue t}d&&d.push(v),f.push(h)}}return f}function ri(t,e,n){var i=null==(t=ea(t,e=Vi(e,t)))?t:t[fa(Ca(e))];return null==i?r:ze(i,t,n)}function ii(t){return Su(t)&&Yr(t)==F}function oi(t,e,n,i,o){return t===e||(null==t||null==e||!Su(t)&&!Su(e)?t!=t&&e!=e:function(t,e,n,i,o,a){var u=gu(t),s=gu(e),c=u?U:Ho(t),f=s?U:Ho(e),l=(c=c==F?X:c)==X,p=(f=f==F?X:f)==X,v=c==f;if(v&&wu(t)){if(!wu(e))return!1;u=!0,l=!1}if(v&&!l)return a||(a=new xr),u||Lu(t)?To(t,e,n,i,o,a):function(t,e,n,r,i,o,a){switch(n){case ut:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case at:return!(t.byteLength!=e.byteLength||!o(new Te(t),new Te(e)));case H:case z:case Z:return du(+t,+e);case W:return t.name==e.name&&t.message==e.message;case Q:case et:return t==e+"";case J:var u=kn;case tt:var s=r&d;if(u||(u=On),t.size!=e.size&&!s)return!1;var c=a.get(t);if(c)return c==e;r|=h,a.set(t,e);var f=To(u(t),u(e),r,i,o,a);return a.delete(t),f;case nt:if(lr)return lr.call(t)==lr.call(e)}return!1}(t,e,c,n,i,o,a);if(!(n&d)){var m=l&&fe.call(t,"__wrapped__"),g=p&&fe.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,_=g?e.value():e;return a||(a=new xr),o(y,_,n,i,a)}}if(!v)return!1;return a||(a=new xr),function(t,e,n,i,o,a){var u=n&d,s=Eo(t),c=s.length,f=Eo(e).length;if(c!=f&&!u)return!1;var l=c;for(;l--;){var p=s[l];if(!(u?p in e:fe.call(e,p)))return!1}var h=a.get(t);if(h&&a.get(e))return h==e;var v=!0;a.set(t,e),a.set(e,t);var m=u;for(;++l<c;){p=s[l];var g=t[p],y=e[p];if(i)var _=u?i(y,g,p,e,t,a):i(g,y,p,t,e,a);if(!(_===r?g===y||o(g,y,n,i,a):_)){v=!1;break}m||(m="constructor"==p)}if(v&&!m){var b=t.constructor,w=e.constructor;b!=w&&"constructor"in t&&"constructor"in e&&!("function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w)&&(v=!1)}return a.delete(t),a.delete(e),v}(t,e,n,i,o,a)}(t,e,n,i,oi,o))}function ai(t,e,n,i){var o=n.length,a=o,u=!i;if(null==t)return!a;for(t=ee(t);o--;){var s=n[o];if(u&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++o<a;){var c=(s=n[o])[0],f=t[c],l=s[1];if(u&&s[2]){if(f===r&&!(c in t))return!1}else{var p=new xr;if(i)var v=i(f,l,c,t,e,p);if(!(v===r?oi(l,f,d|h,i,p):v))return!1}}return!0}function ui(t){return!(!Ou(t)||(e=t,pe&&pe in e))&&(ku(t)?ye:qt).test(la(t));var e}function si(t){return"function"==typeof t?t:null==t?js:"object"==typeof t?gu(t)?hi(t[0],t[1]):di(t):Fs(t)}function ci(t){if(!Xo(t))return qn(t);var e=[];for(var n in ee(t))fe.call(t,n)&&"constructor"!=n&&e.push(n);return e}function fi(t){if(!Ou(t))return function(t){var e=[];if(null!=t)for(var n in ee(t))e.push(n);return e}(t);var e=Xo(t),n=[];for(var r in t)("constructor"!=r||!e&&fe.call(t,r))&&n.push(r);return n}function li(t,e){return t<e}function pi(t,e){var n=-1,r=_u(t)?Gt(t.length):[];return Fr(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function di(t){var e=Do(t);return 1==e.length&&e[0][2]?Qo(e[0][0],e[0][1]):function(n){return n===t||ai(n,t,e)}}function hi(t,e){return Jo(t)&&Yo(e)?Qo(fa(t),e):function(n){var i=Qu(n,t);return i===r&&i===e?ts(n,t):oi(e,i,d|h)}}function vi(t,e,n,i,o){t!==e&&Wr(e,function(a,u){if(o||(o=new xr),Ou(a))!function(t,e,n,i,o,a,u){var s=na(t,n),c=na(e,n),f=u.get(c);if(f)return void Or(t,n,f);var l=a?a(s,c,n+"",t,e,u):r,p=l===r;if(p){var d=gu(c),h=!d&&wu(c),v=!d&&!h&&Lu(c);l=c,d||h||v?gu(s)?l=s:bu(s)?l=no(s):h?(p=!1,l=Gi(c,!0)):v?(p=!1,l=Yi(c,!0)):l=[]:Eu(c)||mu(c)?(l=s,mu(s)?l=qu(s):Ou(s)&&!ku(s)||(l=qo(c))):p=!1}p&&(u.set(c,l),o(l,c,i,a,u),u.delete(c));Or(t,n,l)}(t,e,u,n,vi,i,o);else{var s=i?i(na(t,u),a,u+"",t,e,o):r;s===r&&(s=a),Or(t,u,s)}},os)}function mi(t,e){var n=t.length;if(n)return Vo(e+=e<0?n:0,n)?t[e]:r}function gi(t,e,n){var r=-1;return e=Xe(e.length?e:[js],vn(Lo())),function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}(pi(t,function(t,n,i){return{criteria:Xe(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return function(t,e,n){var r=-1,i=t.criteria,o=e.criteria,a=i.length,u=n.length;for(;++r<a;){var s=Qi(i[r],o[r]);if(s){if(r>=u)return s;var c=n[r];return s*("desc"==c?-1:1)}}return t.index-e.index}(t,e,n)})}function yi(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],u=Gr(t,a);n(u,a)&&$i(o,Vi(a,t),u)}return o}function _i(t,e,n,r){var i=r?un:an,o=-1,a=e.length,u=t;for(t===e&&(e=no(e)),n&&(u=Xe(t,vn(n)));++o<a;)for(var s=0,c=e[o],f=n?n(c):c;(s=i(u,f,s,r))>-1;)u!==t&&Le.call(u,s,1),Le.call(t,s,1);return t}function bi(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Vo(i)?Le.call(t,i,1):Di(t,i)}}return t}function wi(t,e){return t+Fn(Zn()*(e-t+1))}function xi(t,e){var n="";if(!t||e<1||e>M)return n;do{e%2&&(n+=t),(e=Fn(e/2))&&(t+=t)}while(e);return n}function Ci(t,e){return oa(ta(t,e,js),t+"")}function ki(t){return kr(ds(t))}function Ai(t,e){var n=ds(t);return sa(n,Ir(e,0,n.length))}function $i(t,e,n,i){if(!Ou(t))return t;for(var o=-1,a=(e=Vi(e,t)).length,u=a-1,s=t;null!=s&&++o<a;){var c=fa(e[o]),f=n;if(o!=u){var l=s[c];(f=i?i(l,c,s):r)===r&&(f=Ou(l)?l:Vo(e[o+1])?[]:{})}Sr(s,c,f),s=s[c]}return t}var Oi=rr?function(t,e){return rr.set(t,e),t}:js,Si=In?function(t,e){return In(t,"toString",{configurable:!0,enumerable:!1,value:Os(e),writable:!0})}:js;function Ti(t){return sa(ds(t))}function ji(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Gt(i);++r<i;)o[r]=t[r+e];return o}function Ei(t,e){var n;return Fr(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function Mi(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e==e&&i<=P){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!Ru(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return Ni(t,e,js,n)}function Ni(t,e,n,i){e=n(e);for(var o=0,a=null==t?0:t.length,u=e!=e,s=null===e,c=Ru(e),f=e===r;o<a;){var l=Fn((o+a)/2),p=n(t[l]),d=p!==r,h=null===p,v=p==p,m=Ru(p);if(u)var g=i||v;else g=f?v&&(i||d):s?v&&d&&(i||!h):c?v&&d&&!h&&(i||!m):!h&&!m&&(i?p<=e:p<e);g?o=l+1:a=l}return Vn(a,L)}function Ii(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],u=e?e(a):a;if(!n||!du(u,s)){var s=u;o[i++]=0===a?0:a}}return o}function Ri(t){return"number"==typeof t?t:Ru(t)?I:+t}function Li(t){if("string"==typeof t)return t;if(gu(t))return Xe(t,Li)+"";if(Ru(t))return pr?pr.call(t):"";var e=t+"";return"0"==e&&1/t==-E?"-0":e}function Pi(t,e,n){var r=-1,o=Ze,a=t.length,u=!0,s=[],c=s;if(n)u=!1,o=Ge;else if(a>=i){var f=e?null:Co(t);if(f)return On(f);u=!1,o=gn,c=new wr}else c=e?[]:s;t:for(;++r<a;){var l=t[r],p=e?e(l):l;if(l=n||0!==l?l:0,u&&p==p){for(var d=c.length;d--;)if(c[d]===p)continue t;e&&c.push(p),s.push(l)}else o(c,p,n)||(c!==s&&c.push(p),s.push(l))}return s}function Di(t,e){return null==(t=ea(t,e=Vi(e,t)))||delete t[fa(Ca(e))]}function Fi(t,e,n,r){return $i(t,e,n(Gr(t,e)),r)}function Ui(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?ji(t,r?0:o,r?o+1:i):ji(t,r?o+1:0,r?i:o)}function Bi(t,e){var n=t;return n instanceof gr&&(n=n.value()),Qe(e,function(t,e){return e.func.apply(e.thisArg,Ye([t],e.args))},n)}function Hi(t,e,n){var r=t.length;if(r<2)return r?Pi(t[0]):[];for(var i=-1,o=Gt(r);++i<r;)for(var a=t[i],u=-1;++u<r;)u!=i&&(o[i]=Dr(o[i]||a,t[u],e,n));return Pi(qr(o,1),e,n)}function zi(t,e,n){for(var i=-1,o=t.length,a=e.length,u={};++i<o;){var s=i<a?e[i]:r;n(u,t[i],s)}return u}function qi(t){return bu(t)?t:[]}function Wi(t){return"function"==typeof t?t:js}function Vi(t,e){return gu(t)?t:Jo(t,e)?[t]:ca(Wu(t))}var Ki=Ci;function Ji(t,e,n){var i=t.length;return n=n===r?i:n,!e&&n>=i?t:ji(t,e,n)}var Zi=Rn||function(t){return Ee.clearTimeout(t)};function Gi(t,e){if(e)return t.slice();var n=t.length,r=je?je(n):new t.constructor(n);return t.copy(r),r}function Xi(t){var e=new t.constructor(t.byteLength);return new Te(e).set(new Te(t)),e}function Yi(t,e){var n=e?Xi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Qi(t,e){if(t!==e){var n=t!==r,i=null===t,o=t==t,a=Ru(t),u=e!==r,s=null===e,c=e==e,f=Ru(e);if(!s&&!f&&!a&&t>e||a&&u&&c&&!s&&!f||i&&u&&c||!n&&c||!o)return 1;if(!i&&!a&&!f&&t<e||f&&n&&o&&!i&&!a||s&&n&&o||!u&&o||!c)return-1}return 0}function to(t,e,n,r){for(var i=-1,o=t.length,a=n.length,u=-1,s=e.length,c=Wn(o-a,0),f=Gt(s+c),l=!r;++u<s;)f[u]=e[u];for(;++i<a;)(l||i<o)&&(f[n[i]]=t[i]);for(;c--;)f[u++]=t[i++];return f}function eo(t,e,n,r){for(var i=-1,o=t.length,a=-1,u=n.length,s=-1,c=e.length,f=Wn(o-u,0),l=Gt(f+c),p=!r;++i<f;)l[i]=t[i];for(var d=i;++s<c;)l[d+s]=e[s];for(;++a<u;)(p||i<o)&&(l[d+n[a]]=t[i++]);return l}function no(t,e){var n=-1,r=t.length;for(e||(e=Gt(r));++n<r;)e[n]=t[n];return e}function ro(t,e,n,i){var o=!n;n||(n={});for(var a=-1,u=e.length;++a<u;){var s=e[a],c=i?i(n[s],t[s],s,n,t):r;c===r&&(c=t[s]),o?Mr(n,s,c):Sr(n,s,c)}return n}function io(t,e){return function(n,r){var i=gu(n)?qe:jr,o=e?e():{};return i(n,t,Lo(r,2),o)}}function oo(t){return Ci(function(e,n){var i=-1,o=n.length,a=o>1?n[o-1]:r,u=o>2?n[2]:r;for(a=t.length>3&&"function"==typeof a?(o--,a):r,u&&Ko(n[0],n[1],u)&&(a=o<3?r:a,o=1),e=ee(e);++i<o;){var s=n[i];s&&t(e,s,i,a)}return e})}function ao(t,e){return function(n,r){if(null==n)return n;if(!_u(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=ee(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function uo(t){return function(e,n,r){for(var i=-1,o=ee(e),a=r(e),u=a.length;u--;){var s=a[t?u:++i];if(!1===n(o[s],s,o))break}return e}}function so(t){return function(e){var n=Cn(e=Wu(e))?jn(e):r,i=n?n[0]:e.charAt(0),o=n?Ji(n,1).join(""):e.slice(1);return i[t]()+o}}function co(t){return function(e){return Qe(ks(ms(e).replace(me,"")),t,"")}}function fo(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=hr(t.prototype),r=t.apply(n,e);return Ou(r)?r:n}}function lo(t){return function(e,n,i){var o=ee(e);if(!_u(e)){var a=Lo(n,3);e=is(e),n=function(t){return a(o[t],t,o)}}var u=t(e,n,i);return u>-1?o[a?e[u]:u]:r}}function po(t){return jo(function(e){var n=e.length,i=n,o=mr.prototype.thru;for(t&&e.reverse();i--;){var u=e[i];if("function"!=typeof u)throw new ie(a);if(o&&!s&&"wrapper"==Io(u))var s=new mr([],!0)}for(i=s?i:n;++i<n;){var c=Io(u=e[i]),f="wrapper"==c?No(u):r;s=f&&Zo(f[0])&&f[1]==(x|y|b|C)&&!f[4].length&&1==f[9]?s[Io(f[0])].apply(s,f[3]):1==u.length&&Zo(u)?s[c]():s.thru(u)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&gu(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function ho(t,e,n,i,o,a,u,s,c,f){var l=e&x,p=e&v,d=e&m,h=e&(y|_),g=e&k,b=d?r:fo(t);return function v(){for(var m=arguments.length,y=Gt(m),_=m;_--;)y[_]=arguments[_];if(h)var w=Ro(v),x=function(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}(y,w);if(i&&(y=to(y,i,o,h)),a&&(y=eo(y,a,u,h)),m-=x,h&&m<f){var C=$n(y,w);return wo(t,e,ho,v.placeholder,n,y,C,s,c,f-m)}var k=p?n:this,A=d?k[t]:t;return m=y.length,s?y=function(t,e){var n=t.length,i=Vn(e.length,n),o=no(t);for(;i--;){var a=e[i];t[i]=Vo(a,n)?o[a]:r}return t}(y,s):g&&m>1&&y.reverse(),l&&c<m&&(y.length=c),this&&this!==Ee&&this instanceof v&&(A=b||fo(A)),A.apply(k,y)}}function vo(t,e){return function(n,r){return function(t,e,n,r){return Kr(t,function(t,i,o){e(r,n(t),i,o)}),r}(n,t,e(r),{})}}function mo(t,e){return function(n,i){var o;if(n===r&&i===r)return e;if(n!==r&&(o=n),i!==r){if(o===r)return i;"string"==typeof n||"string"==typeof i?(n=Li(n),i=Li(i)):(n=Ri(n),i=Ri(i)),o=t(n,i)}return o}}function go(t){return jo(function(e){return e=Xe(e,vn(Lo())),Ci(function(n){var r=this;return t(e,function(t){return ze(t,r,n)})})})}function yo(t,e){var n=(e=e===r?" ":Li(e)).length;if(n<2)return n?xi(e,t):e;var i=xi(e,Dn(t/Tn(e)));return Cn(e)?Ji(jn(i),0,t).join(""):i.slice(0,t)}function _o(t){return function(e,n,i){return i&&"number"!=typeof i&&Ko(e,n,i)&&(n=i=r),e=Uu(e),n===r?(n=e,e=0):n=Uu(n),function(t,e,n,r){for(var i=-1,o=Wn(Dn((e-t)/(n||1)),0),a=Gt(o);o--;)a[r?o:++i]=t,t+=n;return a}(e,n,i=i===r?e<n?1:-1:Uu(i),t)}}function bo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=zu(e),n=zu(n)),t(e,n)}}function wo(t,e,n,i,o,a,u,s,c,f){var l=e&y;e|=l?b:w,(e&=~(l?w:b))&g||(e&=~(v|m));var p=[t,e,o,l?a:r,l?u:r,l?r:a,l?r:u,s,c,f],d=n.apply(r,p);return Zo(t)&&ra(d,p),d.placeholder=i,aa(d,t,e)}function xo(t){var e=te[t];return function(t,n){if(t=zu(t),(n=null==n?0:Vn(Bu(n),292))&&Hn(t)){var r=(Wu(t)+"e").split("e");return+((r=(Wu(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return e(t)}}var Co=tr&&1/On(new tr([,-0]))[1]==E?function(t){return new tr(t)}:Rs;function ko(t){return function(e){var n=Ho(e);return n==J?kn(e):n==tt?Sn(e):function(t,e){return Xe(e,function(e){return[e,t[e]]})}(e,t(e))}}function Ao(t,e,n,i,o,u,s,f){var l=e&m;if(!l&&"function"!=typeof t)throw new ie(a);var p=i?i.length:0;if(p||(e&=~(b|w),i=o=r),s=s===r?s:Wn(Bu(s),0),f=f===r?f:Bu(f),p-=o?o.length:0,e&w){var d=i,h=o;i=o=r}var k=l?r:No(t),A=[t,e,n,i,o,d,h,u,s,f];if(k&&function(t,e){var n=t[1],r=e[1],i=n|r,o=i<(v|m|x),a=r==x&&n==y||r==x&&n==C&&t[7].length<=e[8]||r==(x|C)&&e[7].length<=e[8]&&n==y;if(!o&&!a)return t;r&v&&(t[2]=e[2],i|=n&v?0:g);var u=e[3];if(u){var s=t[3];t[3]=s?to(s,u,e[4]):u,t[4]=s?$n(t[3],c):e[4]}(u=e[5])&&(s=t[5],t[5]=s?eo(s,u,e[6]):u,t[6]=s?$n(t[5],c):e[6]);(u=e[7])&&(t[7]=u);r&x&&(t[8]=null==t[8]?e[8]:Vn(t[8],e[8]));null==t[9]&&(t[9]=e[9]);t[0]=e[0],t[1]=i}(A,k),t=A[0],e=A[1],n=A[2],i=A[3],o=A[4],!(f=A[9]=A[9]===r?l?0:t.length:Wn(A[9]-p,0))&&e&(y|_)&&(e&=~(y|_)),e&&e!=v)$=e==y||e==_?function(t,e,n){var i=fo(t);return function o(){for(var a=arguments.length,u=Gt(a),s=a,c=Ro(o);s--;)u[s]=arguments[s];var f=a<3&&u[0]!==c&&u[a-1]!==c?[]:$n(u,c);return(a-=f.length)<n?wo(t,e,ho,o.placeholder,r,u,f,r,r,n-a):ze(this&&this!==Ee&&this instanceof o?i:t,this,u)}}(t,e,f):e!=b&&e!=(v|b)||o.length?ho.apply(r,A):function(t,e,n,r){var i=e&v,o=fo(t);return function e(){for(var a=-1,u=arguments.length,s=-1,c=r.length,f=Gt(c+u),l=this&&this!==Ee&&this instanceof e?o:t;++s<c;)f[s]=r[s];for(;u--;)f[s++]=arguments[++a];return ze(l,i?n:this,f)}}(t,e,n,i);else var $=function(t,e,n){var r=e&v,i=fo(t);return function e(){return(this&&this!==Ee&&this instanceof e?i:t).apply(r?n:this,arguments)}}(t,e,n);return aa((k?Oi:ra)($,A),t,e)}function $o(t,e,n,i){return t===r||du(t,ue[n])&&!fe.call(i,n)?e:t}function Oo(t,e,n,i,o,a){return Ou(t)&&Ou(e)&&(a.set(e,t),vi(t,e,r,Oo,a),a.delete(e)),t}function So(t){return Eu(t)?r:t}function To(t,e,n,i,o,a){var u=n&d,s=t.length,c=e.length;if(s!=c&&!(u&&c>s))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var l=-1,p=!0,v=n&h?new wr:r;for(a.set(t,e),a.set(e,t);++l<s;){var m=t[l],g=e[l];if(i)var y=u?i(g,m,l,e,t,a):i(m,g,l,t,e,a);if(y!==r){if(y)continue;p=!1;break}if(v){if(!en(e,function(t,e){if(!gn(v,e)&&(m===t||o(m,t,n,i,a)))return v.push(e)})){p=!1;break}}else if(m!==g&&!o(m,g,n,i,a)){p=!1;break}}return a.delete(t),a.delete(e),p}function jo(t){return oa(ta(t,r,ya),t+"")}function Eo(t){return Xr(t,is,Uo)}function Mo(t){return Xr(t,os,Bo)}var No=rr?function(t){return rr.get(t)}:Rs;function Io(t){for(var e=t.name+"",n=ir[e],r=fe.call(ir,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function Ro(t){return(fe.call(dr,"placeholder")?dr:t).placeholder}function Lo(){var t=dr.iteratee||Es;return t=t===Es?si:t,arguments.length?t(arguments[0],arguments[1]):t}function Po(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function Do(t){for(var e=is(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Yo(i)]}return e}function Fo(t,e){var n=function(t,e){return null==t?r:t[e]}(t,e);return ui(n)?n:r}var Uo=Un?function(t){return null==t?[]:(t=ee(t),Je(Un(t),function(e){return Re.call(t,e)}))}:Hs,Bo=Un?function(t){for(var e=[];t;)Ye(e,Uo(t)),t=Me(t);return e}:Hs,Ho=Yr;function zo(t,e,n){for(var r=-1,i=(e=Vi(e,t)).length,o=!1;++r<i;){var a=fa(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&$u(i)&&Vo(a,i)&&(gu(t)||mu(t))}function qo(t){return"function"!=typeof t.constructor||Xo(t)?{}:hr(Me(t))}function Wo(t){return gu(t)||mu(t)||!!(nn&&t&&t[nn])}function Vo(t,e){var n=typeof t;return!!(e=null==e?M:e)&&("number"==n||"symbol"!=n&&Vt.test(t))&&t>-1&&t%1==0&&t<e}function Ko(t,e,n){if(!Ou(n))return!1;var r=typeof e;return!!("number"==r?_u(n)&&Vo(e,n.length):"string"==r&&e in n)&&du(n[e],t)}function Jo(t,e){if(gu(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Ru(t))||(St.test(t)||!Ot.test(t)||null!=e&&t in ee(e))}function Zo(t){var e=Io(t),n=dr[e];if("function"!=typeof n||!(e in gr.prototype))return!1;if(t===n)return!0;var r=No(n);return!!r&&t===r[0]}(Xn&&Ho(new Xn(new ArrayBuffer(1)))!=ut||Yn&&Ho(new Yn)!=J||Qn&&"[object Promise]"!=Ho(Qn.resolve())||tr&&Ho(new tr)!=tt||er&&Ho(new er)!=it)&&(Ho=function(t){var e=Yr(t),n=e==X?t.constructor:r,i=n?la(n):"";if(i)switch(i){case or:return ut;case ar:return J;case ur:return"[object Promise]";case sr:return tt;case cr:return it}return e});var Go=se?ku:zs;function Xo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||ue)}function Yo(t){return t==t&&!Ou(t)}function Qo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==r||t in ee(n)))}}function ta(t,e,n){return e=Wn(e===r?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Wn(r.length-e,0),a=Gt(o);++i<o;)a[i]=r[e+i];i=-1;for(var u=Gt(e+1);++i<e;)u[i]=r[i];return u[e]=n(a),ze(t,this,u)}}function ea(t,e){return e.length<2?t:Gr(t,ji(e,0,-1))}function na(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var ra=ua(Oi),ia=Pn||function(t,e){return Ee.setTimeout(t,e)},oa=ua(Si);function aa(t,e,n){var r=e+"";return oa(t,function(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Rt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return We(D,function(n){var r="_."+n[0];e&n[1]&&!Ze(t,r)&&t.push(r)}),t.sort()}(function(t){var e=t.match(Lt);return e?e[1].split(Pt):[]}(r),n)))}function ua(t){var e=0,n=0;return function(){var i=Kn(),o=S-(i-n);if(n=i,o>0){if(++e>=O)return arguments[0]}else e=0;return t.apply(r,arguments)}}function sa(t,e){var n=-1,i=t.length,o=i-1;for(e=e===r?i:e;++n<e;){var a=wi(n,o),u=t[a];t[a]=t[n],t[n]=u}return t.length=e,t}var ca=function(t){var e=uu(t,function(t){return n.size===s&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Tt,function(t,n,r,i){e.push(r?i.replace(Ft,"$1"):n||t)}),e});function fa(t){if("string"==typeof t||Ru(t))return t;var e=t+"";return"0"==e&&1/t==-E?"-0":e}function la(t){if(null!=t){try{return ce.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function pa(t){if(t instanceof gr)return t.clone();var e=new mr(t.__wrapped__,t.__chain__);return e.__actions__=no(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var da=Ci(function(t,e){return bu(t)?Dr(t,qr(e,1,bu,!0)):[]}),ha=Ci(function(t,e){var n=Ca(e);return bu(n)&&(n=r),bu(t)?Dr(t,qr(e,1,bu,!0),Lo(n,2)):[]}),va=Ci(function(t,e){var n=Ca(e);return bu(n)&&(n=r),bu(t)?Dr(t,qr(e,1,bu,!0),r,n):[]});function ma(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Bu(n);return i<0&&(i=Wn(r+i,0)),on(t,Lo(e,3),i)}function ga(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var o=i-1;return n!==r&&(o=Bu(n),o=n<0?Wn(i+o,0):Vn(o,i-1)),on(t,Lo(e,3),o,!0)}function ya(t){return(null==t?0:t.length)?qr(t,1):[]}function _a(t){return t&&t.length?t[0]:r}var ba=Ci(function(t){var e=Xe(t,qi);return e.length&&e[0]===t[0]?ni(e):[]}),wa=Ci(function(t){var e=Ca(t),n=Xe(t,qi);return e===Ca(n)?e=r:n.pop(),n.length&&n[0]===t[0]?ni(n,Lo(e,2)):[]}),xa=Ci(function(t){var e=Ca(t),n=Xe(t,qi);return(e="function"==typeof e?e:r)&&n.pop(),n.length&&n[0]===t[0]?ni(n,r,e):[]});function Ca(t){var e=null==t?0:t.length;return e?t[e-1]:r}var ka=Ci(Aa);function Aa(t,e){return t&&t.length&&e&&e.length?_i(t,e):t}var $a=jo(function(t,e){var n=null==t?0:t.length,r=Nr(t,e);return bi(t,Xe(e,function(t){return Vo(t,n)?+t:t}).sort(Qi)),r});function Oa(t){return null==t?t:Gn.call(t)}var Sa=Ci(function(t){return Pi(qr(t,1,bu,!0))}),Ta=Ci(function(t){var e=Ca(t);return bu(e)&&(e=r),Pi(qr(t,1,bu,!0),Lo(e,2))}),ja=Ci(function(t){var e=Ca(t);return e="function"==typeof e?e:r,Pi(qr(t,1,bu,!0),r,e)});function Ea(t){if(!t||!t.length)return[];var e=0;return t=Je(t,function(t){if(bu(t))return e=Wn(t.length,e),!0}),hn(e,function(e){return Xe(t,fn(e))})}function Ma(t,e){if(!t||!t.length)return[];var n=Ea(t);return null==e?n:Xe(n,function(t){return ze(e,r,t)})}var Na=Ci(function(t,e){return bu(t)?Dr(t,e):[]}),Ia=Ci(function(t){return Hi(Je(t,bu))}),Ra=Ci(function(t){var e=Ca(t);return bu(e)&&(e=r),Hi(Je(t,bu),Lo(e,2))}),La=Ci(function(t){var e=Ca(t);return e="function"==typeof e?e:r,Hi(Je(t,bu),r,e)}),Pa=Ci(Ea);var Da=Ci(function(t){var e=t.length,n=e>1?t[e-1]:r;return n="function"==typeof n?(t.pop(),n):r,Ma(t,n)});function Fa(t){var e=dr(t);return e.__chain__=!0,e}function Ua(t,e){return e(t)}var Ba=jo(function(t){var e=t.length,n=e?t[0]:0,i=this.__wrapped__,o=function(e){return Nr(e,t)};return!(e>1||this.__actions__.length)&&i instanceof gr&&Vo(n)?((i=i.slice(n,+n+(e?1:0))).__actions__.push({func:Ua,args:[o],thisArg:r}),new mr(i,this.__chain__).thru(function(t){return e&&!t.length&&t.push(r),t})):this.thru(o)});var Ha=io(function(t,e,n){fe.call(t,n)?++t[n]:Mr(t,n,1)});var za=lo(ma),qa=lo(ga);function Wa(t,e){return(gu(t)?We:Fr)(t,Lo(e,3))}function Va(t,e){return(gu(t)?Ve:Ur)(t,Lo(e,3))}var Ka=io(function(t,e,n){fe.call(t,n)?t[n].push(e):Mr(t,n,[e])});var Ja=Ci(function(t,e,n){var r=-1,i="function"==typeof e,o=_u(t)?Gt(t.length):[];return Fr(t,function(t){o[++r]=i?ze(e,t,n):ri(t,e,n)}),o}),Za=io(function(t,e,n){Mr(t,n,e)});function Ga(t,e){return(gu(t)?Xe:pi)(t,Lo(e,3))}var Xa=io(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]});var Ya=Ci(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Ko(t,e[0],e[1])?e=[]:n>2&&Ko(e[0],e[1],e[2])&&(e=[e[0]]),gi(t,qr(e,1),[])}),Qa=Ln||function(){return Ee.Date.now()};function tu(t,e,n){return e=n?r:e,e=t&&null==e?t.length:e,Ao(t,x,r,r,r,r,e)}function eu(t,e){var n;if("function"!=typeof e)throw new ie(a);return t=Bu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=r),n}}var nu=Ci(function(t,e,n){var r=v;if(n.length){var i=$n(n,Ro(nu));r|=b}return Ao(t,r,e,n,i)}),ru=Ci(function(t,e,n){var r=v|m;if(n.length){var i=$n(n,Ro(ru));r|=b}return Ao(e,r,t,n,i)});function iu(t,e,n){var i,o,u,s,c,f,l=0,p=!1,d=!1,h=!0;if("function"!=typeof t)throw new ie(a);function v(e){var n=i,a=o;return i=o=r,l=e,s=t.apply(a,n)}function m(t){var n=t-f;return f===r||n>=e||n<0||d&&t-l>=u}function g(){var t=Qa();if(m(t))return y(t);c=ia(g,function(t){var n=e-(t-f);return d?Vn(n,u-(t-l)):n}(t))}function y(t){return c=r,h&&i?v(t):(i=o=r,s)}function _(){var t=Qa(),n=m(t);if(i=arguments,o=this,f=t,n){if(c===r)return function(t){return l=t,c=ia(g,e),p?v(t):s}(f);if(d)return Zi(c),c=ia(g,e),v(f)}return c===r&&(c=ia(g,e)),s}return e=zu(e)||0,Ou(n)&&(p=!!n.leading,u=(d="maxWait"in n)?Wn(zu(n.maxWait)||0,e):u,h="trailing"in n?!!n.trailing:h),_.cancel=function(){c!==r&&Zi(c),l=0,i=f=o=c=r},_.flush=function(){return c===r?s:y(Qa())},_}var ou=Ci(function(t,e){return Pr(t,1,e)}),au=Ci(function(t,e,n){return Pr(t,zu(e)||0,n)});function uu(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ie(a);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(uu.Cache||br),n}function su(t){if("function"!=typeof t)throw new ie(a);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}uu.Cache=br;var cu=Ki(function(t,e){var n=(e=1==e.length&&gu(e[0])?Xe(e[0],vn(Lo())):Xe(qr(e,1),vn(Lo()))).length;return Ci(function(r){for(var i=-1,o=Vn(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return ze(t,this,r)})}),fu=Ci(function(t,e){var n=$n(e,Ro(fu));return Ao(t,b,r,e,n)}),lu=Ci(function(t,e){var n=$n(e,Ro(lu));return Ao(t,w,r,e,n)}),pu=jo(function(t,e){return Ao(t,C,r,r,r,e)});function du(t,e){return t===e||t!=t&&e!=e}var hu=bo(Qr),vu=bo(function(t,e){return t>=e}),mu=ii(function(){return arguments}())?ii:function(t){return Su(t)&&fe.call(t,"callee")&&!Re.call(t,"callee")},gu=Gt.isArray,yu=Pe?vn(Pe):function(t){return Su(t)&&Yr(t)==at};function _u(t){return null!=t&&$u(t.length)&&!ku(t)}function bu(t){return Su(t)&&_u(t)}var wu=Bn||zs,xu=De?vn(De):function(t){return Su(t)&&Yr(t)==z};function Cu(t){if(!Su(t))return!1;var e=Yr(t);return e==W||e==q||"string"==typeof t.message&&"string"==typeof t.name&&!Eu(t)}function ku(t){if(!Ou(t))return!1;var e=Yr(t);return e==V||e==K||e==B||e==Y}function Au(t){return"number"==typeof t&&t==Bu(t)}function $u(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=M}function Ou(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Su(t){return null!=t&&"object"==typeof t}var Tu=Fe?vn(Fe):function(t){return Su(t)&&Ho(t)==J};function ju(t){return"number"==typeof t||Su(t)&&Yr(t)==Z}function Eu(t){if(!Su(t)||Yr(t)!=X)return!1;var e=Me(t);if(null===e)return!0;var n=fe.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ce.call(n)==he}var Mu=Ue?vn(Ue):function(t){return Su(t)&&Yr(t)==Q};var Nu=Be?vn(Be):function(t){return Su(t)&&Ho(t)==tt};function Iu(t){return"string"==typeof t||!gu(t)&&Su(t)&&Yr(t)==et}function Ru(t){return"symbol"==typeof t||Su(t)&&Yr(t)==nt}var Lu=He?vn(He):function(t){return Su(t)&&$u(t.length)&&!!ke[Yr(t)]};var Pu=bo(li),Du=bo(function(t,e){return t<=e});function Fu(t){if(!t)return[];if(_u(t))return Iu(t)?jn(t):no(t);if(ln&&t[ln])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ln]());var e=Ho(t);return(e==J?kn:e==tt?On:ds)(t)}function Uu(t){return t?(t=zu(t))===E||t===-E?(t<0?-1:1)*N:t==t?t:0:0===t?t:0}function Bu(t){var e=Uu(t),n=e%1;return e==e?n?e-n:e:0}function Hu(t){return t?Ir(Bu(t),0,R):0}function zu(t){if("number"==typeof t)return t;if(Ru(t))return I;if(Ou(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Ou(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Mt,"");var n=zt.test(t);return n||Wt.test(t)?Se(t.slice(2),n?2:8):Ht.test(t)?I:+t}function qu(t){return ro(t,os(t))}function Wu(t){return null==t?"":Li(t)}var Vu=oo(function(t,e){if(Xo(e)||_u(e))ro(e,is(e),t);else for(var n in e)fe.call(e,n)&&Sr(t,n,e[n])}),Ku=oo(function(t,e){ro(e,os(e),t)}),Ju=oo(function(t,e,n,r){ro(e,os(e),t,r)}),Zu=oo(function(t,e,n,r){ro(e,is(e),t,r)}),Gu=jo(Nr);var Xu=Ci(function(t,e){t=ee(t);var n=-1,i=e.length,o=i>2?e[2]:r;for(o&&Ko(e[0],e[1],o)&&(i=1);++n<i;)for(var a=e[n],u=os(a),s=-1,c=u.length;++s<c;){var f=u[s],l=t[f];(l===r||du(l,ue[f])&&!fe.call(t,f))&&(t[f]=a[f])}return t}),Yu=Ci(function(t){return t.push(r,Oo),ze(us,r,t)});function Qu(t,e,n){var i=null==t?r:Gr(t,e);return i===r?n:i}function ts(t,e){return null!=t&&zo(t,e,ei)}var es=vo(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=de.call(e)),t[e]=n},Os(js)),ns=vo(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=de.call(e)),fe.call(t,e)?t[e].push(n):t[e]=[n]},Lo),rs=Ci(ri);function is(t){return _u(t)?Cr(t):ci(t)}function os(t){return _u(t)?Cr(t,!0):fi(t)}var as=oo(function(t,e,n){vi(t,e,n)}),us=oo(function(t,e,n,r){vi(t,e,n,r)}),ss=jo(function(t,e){var n={};if(null==t)return n;var r=!1;e=Xe(e,function(e){return e=Vi(e,t),r||(r=e.length>1),e}),ro(t,Mo(t),n),r&&(n=Rr(n,f|l|p,So));for(var i=e.length;i--;)Di(n,e[i]);return n});var cs=jo(function(t,e){return null==t?{}:function(t,e){return yi(t,e,function(e,n){return ts(t,n)})}(t,e)});function fs(t,e){if(null==t)return{};var n=Xe(Mo(t),function(t){return[t]});return e=Lo(e),yi(t,n,function(t,n){return e(t,n[0])})}var ls=ko(is),ps=ko(os);function ds(t){return null==t?[]:mn(t,is(t))}var hs=co(function(t,e,n){return e=e.toLowerCase(),t+(n?vs(e):e)});function vs(t){return Cs(Wu(t).toLowerCase())}function ms(t){return(t=Wu(t))&&t.replace(Kt,bn).replace(ge,"")}var gs=co(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),ys=co(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),_s=so("toLowerCase");var bs=co(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()});var ws=co(function(t,e,n){return t+(n?" ":"")+Cs(e)});var xs=co(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Cs=so("toUpperCase");function ks(t,e,n){return t=Wu(t),(e=n?r:e)===r?function(t){return we.test(t)}(t)?function(t){return t.match(_e)||[]}(t):function(t){return t.match(Dt)||[]}(t):t.match(e)||[]}var As=Ci(function(t,e){try{return ze(t,r,e)}catch(t){return Cu(t)?t:new Yt(t)}}),$s=jo(function(t,e){return We(e,function(e){e=fa(e),Mr(t,e,nu(t[e],t))}),t});function Os(t){return function(){return t}}var Ss=po(),Ts=po(!0);function js(t){return t}function Es(t){return si("function"==typeof t?t:Rr(t,f))}var Ms=Ci(function(t,e){return function(n){return ri(n,t,e)}}),Ns=Ci(function(t,e){return function(n){return ri(t,n,e)}});function Is(t,e,n){var r=is(e),i=Zr(e,r);null!=n||Ou(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Zr(e,is(e)));var o=!(Ou(n)&&"chain"in n&&!n.chain),a=ku(t);return We(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=no(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Ye([this.value()],arguments))})}),t}function Rs(){}var Ls=go(Xe),Ps=go(Ke),Ds=go(en);function Fs(t){return Jo(t)?fn(fa(t)):function(t){return function(e){return Gr(e,t)}}(t)}var Us=_o(),Bs=_o(!0);function Hs(){return[]}function zs(){return!1}var qs=mo(function(t,e){return t+e},0),Ws=xo("ceil"),Vs=mo(function(t,e){return t/e},1),Ks=xo("floor");var Js,Zs=mo(function(t,e){return t*e},1),Gs=xo("round"),Xs=mo(function(t,e){return t-e},0);return dr.after=function(t,e){if("function"!=typeof e)throw new ie(a);return t=Bu(t),function(){if(--t<1)return e.apply(this,arguments)}},dr.ary=tu,dr.assign=Vu,dr.assignIn=Ku,dr.assignInWith=Ju,dr.assignWith=Zu,dr.at=Gu,dr.before=eu,dr.bind=nu,dr.bindAll=$s,dr.bindKey=ru,dr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return gu(t)?t:[t]},dr.chain=Fa,dr.chunk=function(t,e,n){e=(n?Ko(t,e,n):e===r)?1:Wn(Bu(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,a=0,u=Gt(Dn(i/e));o<i;)u[a++]=ji(t,o,o+=e);return u},dr.compact=function(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i},dr.concat=function(){var t=arguments.length;if(!t)return[];for(var e=Gt(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return Ye(gu(n)?no(n):[n],qr(e,1))},dr.cond=function(t){var e=null==t?0:t.length,n=Lo();return t=e?Xe(t,function(t){if("function"!=typeof t[1])throw new ie(a);return[n(t[0]),t[1]]}):[],Ci(function(n){for(var r=-1;++r<e;){var i=t[r];if(ze(i[0],this,n))return ze(i[1],this,n)}})},dr.conforms=function(t){return function(t){var e=is(t);return function(n){return Lr(n,t,e)}}(Rr(t,f))},dr.constant=Os,dr.countBy=Ha,dr.create=function(t,e){var n=hr(t);return null==e?n:Er(n,e)},dr.curry=function t(e,n,i){var o=Ao(e,y,r,r,r,r,r,n=i?r:n);return o.placeholder=t.placeholder,o},dr.curryRight=function t(e,n,i){var o=Ao(e,_,r,r,r,r,r,n=i?r:n);return o.placeholder=t.placeholder,o},dr.debounce=iu,dr.defaults=Xu,dr.defaultsDeep=Yu,dr.defer=ou,dr.delay=au,dr.difference=da,dr.differenceBy=ha,dr.differenceWith=va,dr.drop=function(t,e,n){var i=null==t?0:t.length;return i?ji(t,(e=n||e===r?1:Bu(e))<0?0:e,i):[]},dr.dropRight=function(t,e,n){var i=null==t?0:t.length;return i?ji(t,0,(e=i-(e=n||e===r?1:Bu(e)))<0?0:e):[]},dr.dropRightWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3),!0,!0):[]},dr.dropWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3),!0):[]},dr.fill=function(t,e,n,i){var o=null==t?0:t.length;return o?(n&&"number"!=typeof n&&Ko(t,e,n)&&(n=0,i=o),function(t,e,n,i){var o=t.length;for((n=Bu(n))<0&&(n=-n>o?0:o+n),(i=i===r||i>o?o:Bu(i))<0&&(i+=o),i=n>i?0:Hu(i);n<i;)t[n++]=e;return t}(t,e,n,i)):[]},dr.filter=function(t,e){return(gu(t)?Je:zr)(t,Lo(e,3))},dr.flatMap=function(t,e){return qr(Ga(t,e),1)},dr.flatMapDeep=function(t,e){return qr(Ga(t,e),E)},dr.flatMapDepth=function(t,e,n){return n=n===r?1:Bu(n),qr(Ga(t,e),n)},dr.flatten=ya,dr.flattenDeep=function(t){return(null==t?0:t.length)?qr(t,E):[]},dr.flattenDepth=function(t,e){return(null==t?0:t.length)?qr(t,e=e===r?1:Bu(e)):[]},dr.flip=function(t){return Ao(t,k)},dr.flow=Ss,dr.flowRight=Ts,dr.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r},dr.functions=function(t){return null==t?[]:Zr(t,is(t))},dr.functionsIn=function(t){return null==t?[]:Zr(t,os(t))},dr.groupBy=Ka,dr.initial=function(t){return(null==t?0:t.length)?ji(t,0,-1):[]},dr.intersection=ba,dr.intersectionBy=wa,dr.intersectionWith=xa,dr.invert=es,dr.invertBy=ns,dr.invokeMap=Ja,dr.iteratee=Es,dr.keyBy=Za,dr.keys=is,dr.keysIn=os,dr.map=Ga,dr.mapKeys=function(t,e){var n={};return e=Lo(e,3),Kr(t,function(t,r,i){Mr(n,e(t,r,i),t)}),n},dr.mapValues=function(t,e){var n={};return e=Lo(e,3),Kr(t,function(t,r,i){Mr(n,r,e(t,r,i))}),n},dr.matches=function(t){return di(Rr(t,f))},dr.matchesProperty=function(t,e){return hi(t,Rr(e,f))},dr.memoize=uu,dr.merge=as,dr.mergeWith=us,dr.method=Ms,dr.methodOf=Ns,dr.mixin=Is,dr.negate=su,dr.nthArg=function(t){return t=Bu(t),Ci(function(e){return mi(e,t)})},dr.omit=ss,dr.omitBy=function(t,e){return fs(t,su(Lo(e)))},dr.once=function(t){return eu(2,t)},dr.orderBy=function(t,e,n,i){return null==t?[]:(gu(e)||(e=null==e?[]:[e]),gu(n=i?r:n)||(n=null==n?[]:[n]),gi(t,e,n))},dr.over=Ls,dr.overArgs=cu,dr.overEvery=Ps,dr.overSome=Ds,dr.partial=fu,dr.partialRight=lu,dr.partition=Xa,dr.pick=cs,dr.pickBy=fs,dr.property=Fs,dr.propertyOf=function(t){return function(e){return null==t?r:Gr(t,e)}},dr.pull=ka,dr.pullAll=Aa,dr.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?_i(t,e,Lo(n,2)):t},dr.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?_i(t,e,r,n):t},dr.pullAt=$a,dr.range=Us,dr.rangeRight=Bs,dr.rearg=pu,dr.reject=function(t,e){return(gu(t)?Je:zr)(t,su(Lo(e,3)))},dr.remove=function(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=Lo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return bi(t,i),n},dr.rest=function(t,e){if("function"!=typeof t)throw new ie(a);return Ci(t,e=e===r?e:Bu(e))},dr.reverse=Oa,dr.sampleSize=function(t,e,n){return e=(n?Ko(t,e,n):e===r)?1:Bu(e),(gu(t)?Ar:Ai)(t,e)},dr.set=function(t,e,n){return null==t?t:$i(t,e,n)},dr.setWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:$i(t,e,n,i)},dr.shuffle=function(t){return(gu(t)?$r:Ti)(t)},dr.slice=function(t,e,n){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Ko(t,e,n)?(e=0,n=i):(e=null==e?0:Bu(e),n=n===r?i:Bu(n)),ji(t,e,n)):[]},dr.sortBy=Ya,dr.sortedUniq=function(t){return t&&t.length?Ii(t):[]},dr.sortedUniqBy=function(t,e){return t&&t.length?Ii(t,Lo(e,2)):[]},dr.split=function(t,e,n){return n&&"number"!=typeof n&&Ko(t,e,n)&&(e=n=r),(n=n===r?R:n>>>0)?(t=Wu(t))&&("string"==typeof e||null!=e&&!Mu(e))&&!(e=Li(e))&&Cn(t)?Ji(jn(t),0,n):t.split(e,n):[]},dr.spread=function(t,e){if("function"!=typeof t)throw new ie(a);return e=null==e?0:Wn(Bu(e),0),Ci(function(n){var r=n[e],i=Ji(n,0,e);return r&&Ye(i,r),ze(t,this,i)})},dr.tail=function(t){var e=null==t?0:t.length;return e?ji(t,1,e):[]},dr.take=function(t,e,n){return t&&t.length?ji(t,0,(e=n||e===r?1:Bu(e))<0?0:e):[]},dr.takeRight=function(t,e,n){var i=null==t?0:t.length;return i?ji(t,(e=i-(e=n||e===r?1:Bu(e)))<0?0:e,i):[]},dr.takeRightWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3),!1,!0):[]},dr.takeWhile=function(t,e){return t&&t.length?Ui(t,Lo(e,3)):[]},dr.tap=function(t,e){return e(t),t},dr.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ie(a);return Ou(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),iu(t,e,{leading:r,maxWait:e,trailing:i})},dr.thru=Ua,dr.toArray=Fu,dr.toPairs=ls,dr.toPairsIn=ps,dr.toPath=function(t){return gu(t)?Xe(t,fa):Ru(t)?[t]:no(ca(Wu(t)))},dr.toPlainObject=qu,dr.transform=function(t,e,n){var r=gu(t),i=r||wu(t)||Lu(t);if(e=Lo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Ou(t)&&ku(o)?hr(Me(t)):{}}return(i?We:Kr)(t,function(t,r,i){return e(n,t,r,i)}),n},dr.unary=function(t){return tu(t,1)},dr.union=Sa,dr.unionBy=Ta,dr.unionWith=ja,dr.uniq=function(t){return t&&t.length?Pi(t):[]},dr.uniqBy=function(t,e){return t&&t.length?Pi(t,Lo(e,2)):[]},dr.uniqWith=function(t,e){return e="function"==typeof e?e:r,t&&t.length?Pi(t,r,e):[]},dr.unset=function(t,e){return null==t||Di(t,e)},dr.unzip=Ea,dr.unzipWith=Ma,dr.update=function(t,e,n){return null==t?t:Fi(t,e,Wi(n))},dr.updateWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:Fi(t,e,Wi(n),i)},dr.values=ds,dr.valuesIn=function(t){return null==t?[]:mn(t,os(t))},dr.without=Na,dr.words=ks,dr.wrap=function(t,e){return fu(Wi(e),t)},dr.xor=Ia,dr.xorBy=Ra,dr.xorWith=La,dr.zip=Pa,dr.zipObject=function(t,e){return zi(t||[],e||[],Sr)},dr.zipObjectDeep=function(t,e){return zi(t||[],e||[],$i)},dr.zipWith=Da,dr.entries=ls,dr.entriesIn=ps,dr.extend=Ku,dr.extendWith=Ju,Is(dr,dr),dr.add=qs,dr.attempt=As,dr.camelCase=hs,dr.capitalize=vs,dr.ceil=Ws,dr.clamp=function(t,e,n){return n===r&&(n=e,e=r),n!==r&&(n=(n=zu(n))==n?n:0),e!==r&&(e=(e=zu(e))==e?e:0),Ir(zu(t),e,n)},dr.clone=function(t){return Rr(t,p)},dr.cloneDeep=function(t){return Rr(t,f|p)},dr.cloneDeepWith=function(t,e){return Rr(t,f|p,e="function"==typeof e?e:r)},dr.cloneWith=function(t,e){return Rr(t,p,e="function"==typeof e?e:r)},dr.conformsTo=function(t,e){return null==e||Lr(t,e,is(e))},dr.deburr=ms,dr.defaultTo=function(t,e){return null==t||t!=t?e:t},dr.divide=Vs,dr.endsWith=function(t,e,n){t=Wu(t),e=Li(e);var i=t.length,o=n=n===r?i:Ir(Bu(n),0,i);return(n-=e.length)>=0&&t.slice(n,o)==e},dr.eq=du,dr.escape=function(t){return(t=Wu(t))&&Ct.test(t)?t.replace(wt,wn):t},dr.escapeRegExp=function(t){return(t=Wu(t))&&Et.test(t)?t.replace(jt,"\\$&"):t},dr.every=function(t,e,n){var i=gu(t)?Ke:Br;return n&&Ko(t,e,n)&&(e=r),i(t,Lo(e,3))},dr.find=za,dr.findIndex=ma,dr.findKey=function(t,e){return rn(t,Lo(e,3),Kr)},dr.findLast=qa,dr.findLastIndex=ga,dr.findLastKey=function(t,e){return rn(t,Lo(e,3),Jr)},dr.floor=Ks,dr.forEach=Wa,dr.forEachRight=Va,dr.forIn=function(t,e){return null==t?t:Wr(t,Lo(e,3),os)},dr.forInRight=function(t,e){return null==t?t:Vr(t,Lo(e,3),os)},dr.forOwn=function(t,e){return t&&Kr(t,Lo(e,3))},dr.forOwnRight=function(t,e){return t&&Jr(t,Lo(e,3))},dr.get=Qu,dr.gt=hu,dr.gte=vu,dr.has=function(t,e){return null!=t&&zo(t,e,ti)},dr.hasIn=ts,dr.head=_a,dr.identity=js,dr.includes=function(t,e,n,r){t=_u(t)?t:ds(t),n=n&&!r?Bu(n):0;var i=t.length;return n<0&&(n=Wn(i+n,0)),Iu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&an(t,e,n)>-1},dr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Bu(n);return i<0&&(i=Wn(r+i,0)),an(t,e,i)},dr.inRange=function(t,e,n){return e=Uu(e),n===r?(n=e,e=0):n=Uu(n),function(t,e,n){return t>=Vn(e,n)&&t<Wn(e,n)}(t=zu(t),e,n)},dr.invoke=rs,dr.isArguments=mu,dr.isArray=gu,dr.isArrayBuffer=yu,dr.isArrayLike=_u,dr.isArrayLikeObject=bu,dr.isBoolean=function(t){return!0===t||!1===t||Su(t)&&Yr(t)==H},dr.isBuffer=wu,dr.isDate=xu,dr.isElement=function(t){return Su(t)&&1===t.nodeType&&!Eu(t)},dr.isEmpty=function(t){if(null==t)return!0;if(_u(t)&&(gu(t)||"string"==typeof t||"function"==typeof t.splice||wu(t)||Lu(t)||mu(t)))return!t.length;var e=Ho(t);if(e==J||e==tt)return!t.size;if(Xo(t))return!ci(t).length;for(var n in t)if(fe.call(t,n))return!1;return!0},dr.isEqual=function(t,e){return oi(t,e)},dr.isEqualWith=function(t,e,n){var i=(n="function"==typeof n?n:r)?n(t,e):r;return i===r?oi(t,e,r,n):!!i},dr.isError=Cu,dr.isFinite=function(t){return"number"==typeof t&&Hn(t)},dr.isFunction=ku,dr.isInteger=Au,dr.isLength=$u,dr.isMap=Tu,dr.isMatch=function(t,e){return t===e||ai(t,e,Do(e))},dr.isMatchWith=function(t,e,n){return n="function"==typeof n?n:r,ai(t,e,Do(e),n)},dr.isNaN=function(t){return ju(t)&&t!=+t},dr.isNative=function(t){if(Go(t))throw new Yt(o);return ui(t)},dr.isNil=function(t){return null==t},dr.isNull=function(t){return null===t},dr.isNumber=ju,dr.isObject=Ou,dr.isObjectLike=Su,dr.isPlainObject=Eu,dr.isRegExp=Mu,dr.isSafeInteger=function(t){return Au(t)&&t>=-M&&t<=M},dr.isSet=Nu,dr.isString=Iu,dr.isSymbol=Ru,dr.isTypedArray=Lu,dr.isUndefined=function(t){return t===r},dr.isWeakMap=function(t){return Su(t)&&Ho(t)==it},dr.isWeakSet=function(t){return Su(t)&&Yr(t)==ot},dr.join=function(t,e){return null==t?"":zn.call(t,e)},dr.kebabCase=gs,dr.last=Ca,dr.lastIndexOf=function(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var o=i;return n!==r&&(o=(o=Bu(n))<0?Wn(i+o,0):Vn(o,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,o):on(t,sn,o,!0)},dr.lowerCase=ys,dr.lowerFirst=_s,dr.lt=Pu,dr.lte=Du,dr.max=function(t){return t&&t.length?Hr(t,js,Qr):r},dr.maxBy=function(t,e){return t&&t.length?Hr(t,Lo(e,2),Qr):r},dr.mean=function(t){return cn(t,js)},dr.meanBy=function(t,e){return cn(t,Lo(e,2))},dr.min=function(t){return t&&t.length?Hr(t,js,li):r},dr.minBy=function(t,e){return t&&t.length?Hr(t,Lo(e,2),li):r},dr.stubArray=Hs,dr.stubFalse=zs,dr.stubObject=function(){return{}},dr.stubString=function(){return""},dr.stubTrue=function(){return!0},dr.multiply=Zs,dr.nth=function(t,e){return t&&t.length?mi(t,Bu(e)):r},dr.noConflict=function(){return Ee._===this&&(Ee._=ve),this},dr.noop=Rs,dr.now=Qa,dr.pad=function(t,e,n){t=Wu(t);var r=(e=Bu(e))?Tn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return yo(Fn(i),n)+t+yo(Dn(i),n)},dr.padEnd=function(t,e,n){t=Wu(t);var r=(e=Bu(e))?Tn(t):0;return e&&r<e?t+yo(e-r,n):t},dr.padStart=function(t,e,n){t=Wu(t);var r=(e=Bu(e))?Tn(t):0;return e&&r<e?yo(e-r,n)+t:t},dr.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),Jn(Wu(t).replace(Nt,""),e||0)},dr.random=function(t,e,n){if(n&&"boolean"!=typeof n&&Ko(t,e,n)&&(e=n=r),n===r&&("boolean"==typeof e?(n=e,e=r):"boolean"==typeof t&&(n=t,t=r)),t===r&&e===r?(t=0,e=1):(t=Uu(t),e===r?(e=t,t=0):e=Uu(e)),t>e){var i=t;t=e,e=i}if(n||t%1||e%1){var o=Zn();return Vn(t+o*(e-t+Oe("1e-"+((o+"").length-1))),e)}return wi(t,e)},dr.reduce=function(t,e,n){var r=gu(t)?Qe:pn,i=arguments.length<3;return r(t,Lo(e,4),n,i,Fr)},dr.reduceRight=function(t,e,n){var r=gu(t)?tn:pn,i=arguments.length<3;return r(t,Lo(e,4),n,i,Ur)},dr.repeat=function(t,e,n){return e=(n?Ko(t,e,n):e===r)?1:Bu(e),xi(Wu(t),e)},dr.replace=function(){var t=arguments,e=Wu(t[0]);return t.length<3?e:e.replace(t[1],t[2])},dr.result=function(t,e,n){var i=-1,o=(e=Vi(e,t)).length;for(o||(o=1,t=r);++i<o;){var a=null==t?r:t[fa(e[i])];a===r&&(i=o,a=n),t=ku(a)?a.call(t):a}return t},dr.round=Gs,dr.runInContext=t,dr.sample=function(t){return(gu(t)?kr:ki)(t)},dr.size=function(t){if(null==t)return 0;if(_u(t))return Iu(t)?Tn(t):t.length;var e=Ho(t);return e==J||e==tt?t.size:ci(t).length},dr.snakeCase=bs,dr.some=function(t,e,n){var i=gu(t)?en:Ei;return n&&Ko(t,e,n)&&(e=r),i(t,Lo(e,3))},dr.sortedIndex=function(t,e){return Mi(t,e)},dr.sortedIndexBy=function(t,e,n){return Ni(t,e,Lo(n,2))},dr.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var r=Mi(t,e);if(r<n&&du(t[r],e))return r}return-1},dr.sortedLastIndex=function(t,e){return Mi(t,e,!0)},dr.sortedLastIndexBy=function(t,e,n){return Ni(t,e,Lo(n,2),!0)},dr.sortedLastIndexOf=function(t,e){if(null==t?0:t.length){var n=Mi(t,e,!0)-1;if(du(t[n],e))return n}return-1},dr.startCase=ws,dr.startsWith=function(t,e,n){return t=Wu(t),n=null==n?0:Ir(Bu(n),0,t.length),e=Li(e),t.slice(n,n+e.length)==e},dr.subtract=Xs,dr.sum=function(t){return t&&t.length?dn(t,js):0},dr.sumBy=function(t,e){return t&&t.length?dn(t,Lo(e,2)):0},dr.template=function(t,e,n){var i=dr.templateSettings;n&&Ko(t,e,n)&&(e=r),t=Wu(t),e=Ju({},e,i,$o);var o,a,u=Ju({},e.imports,i.imports,$o),s=is(u),c=mn(u,s),f=0,l=e.interpolate||Jt,p="__p += '",d=ne((e.escape||Jt).source+"|"+l.source+"|"+(l===$t?Ut:Jt).source+"|"+(e.evaluate||Jt).source+"|$","g"),h="//# sourceURL="+(fe.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++Ce+"]")+"\n";t.replace(d,function(e,n,r,i,u,s){return r||(r=i),p+=t.slice(f,s).replace(Zt,xn),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),u&&(a=!0,p+="';\n"+u+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=s+e.length,e}),p+="';\n";var v=fe.call(e,"variable")&&e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(gt,""):p).replace(yt,"$1").replace(_t,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var m=As(function(){return Qt(s,h+"return "+p).apply(r,c)});if(m.source=p,Cu(m))throw m;return m},dr.times=function(t,e){if((t=Bu(t))<1||t>M)return[];var n=R,r=Vn(t,R);e=Lo(e),t-=R;for(var i=hn(r,e);++n<t;)e(n);return i},dr.toFinite=Uu,dr.toInteger=Bu,dr.toLength=Hu,dr.toLower=function(t){return Wu(t).toLowerCase()},dr.toNumber=zu,dr.toSafeInteger=function(t){return t?Ir(Bu(t),-M,M):0===t?t:0},dr.toString=Wu,dr.toUpper=function(t){return Wu(t).toUpperCase()},dr.trim=function(t,e,n){if((t=Wu(t))&&(n||e===r))return t.replace(Mt,"");if(!t||!(e=Li(e)))return t;var i=jn(t),o=jn(e);return Ji(i,yn(i,o),_n(i,o)+1).join("")},dr.trimEnd=function(t,e,n){if((t=Wu(t))&&(n||e===r))return t.replace(It,"");if(!t||!(e=Li(e)))return t;var i=jn(t);return Ji(i,0,_n(i,jn(e))+1).join("")},dr.trimStart=function(t,e,n){if((t=Wu(t))&&(n||e===r))return t.replace(Nt,"");if(!t||!(e=Li(e)))return t;var i=jn(t);return Ji(i,yn(i,jn(e))).join("")},dr.truncate=function(t,e){var n=A,i=$;if(Ou(e)){var o="separator"in e?e.separator:o;n="length"in e?Bu(e.length):n,i="omission"in e?Li(e.omission):i}var a=(t=Wu(t)).length;if(Cn(t)){var u=jn(t);a=u.length}if(n>=a)return t;var s=n-Tn(i);if(s<1)return i;var c=u?Ji(u,0,s).join(""):t.slice(0,s);if(o===r)return c+i;if(u&&(s+=c.length-s),Mu(o)){if(t.slice(s).search(o)){var f,l=c;for(o.global||(o=ne(o.source,Wu(Bt.exec(o))+"g")),o.lastIndex=0;f=o.exec(l);)var p=f.index;c=c.slice(0,p===r?s:p)}}else if(t.indexOf(Li(o),s)!=s){var d=c.lastIndexOf(o);d>-1&&(c=c.slice(0,d))}return c+i},dr.unescape=function(t){return(t=Wu(t))&&xt.test(t)?t.replace(bt,En):t},dr.uniqueId=function(t){var e=++le;return Wu(t)+e},dr.upperCase=xs,dr.upperFirst=Cs,dr.each=Wa,dr.eachRight=Va,dr.first=_a,Is(dr,(Js={},Kr(dr,function(t,e){fe.call(dr.prototype,e)||(Js[e]=t)}),Js),{chain:!1}),dr.VERSION="4.17.15",We(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){dr[t].placeholder=dr}),We(["drop","take"],function(t,e){gr.prototype[t]=function(n){n=n===r?1:Wn(Bu(n),0);var i=this.__filtered__&&!e?new gr(this):this.clone();return i.__filtered__?i.__takeCount__=Vn(n,i.__takeCount__):i.__views__.push({size:Vn(n,R),type:t+(i.__dir__<0?"Right":"")}),i},gr.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),We(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==T||3==n;gr.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Lo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),We(["head","last"],function(t,e){var n="take"+(e?"Right":"");gr.prototype[t]=function(){return this[n](1).value()[0]}}),We(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");gr.prototype[t]=function(){return this.__filtered__?new gr(this):this[n](1)}}),gr.prototype.compact=function(){return this.filter(js)},gr.prototype.find=function(t){return this.filter(t).head()},gr.prototype.findLast=function(t){return this.reverse().find(t)},gr.prototype.invokeMap=Ci(function(t,e){return"function"==typeof t?new gr(this):this.map(function(n){return ri(n,t,e)})}),gr.prototype.reject=function(t){return this.filter(su(Lo(t)))},gr.prototype.slice=function(t,e){t=Bu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new gr(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==r&&(n=(e=Bu(e))<0?n.dropRight(-e):n.take(e-t)),n)},gr.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},gr.prototype.toArray=function(){return this.take(R)},Kr(gr.prototype,function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=dr[i?"take"+("last"==e?"Right":""):e],a=i||/^find/.test(e);o&&(dr.prototype[e]=function(){var e=this.__wrapped__,u=i?[1]:arguments,s=e instanceof gr,c=u[0],f=s||gu(e),l=function(t){var e=o.apply(dr,Ye([t],u));return i&&p?e[0]:e};f&&n&&"function"==typeof c&&1!=c.length&&(s=f=!1);var p=this.__chain__,d=!!this.__actions__.length,h=a&&!p,v=s&&!d;if(!a&&f){e=v?e:new gr(this);var m=t.apply(e,u);return m.__actions__.push({func:Ua,args:[l],thisArg:r}),new mr(m,p)}return h&&v?t.apply(this,u):(m=this.thru(l),h?i?m.value()[0]:m.value():m)})}),We(["pop","push","shift","sort","splice","unshift"],function(t){var e=oe[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);dr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(gu(i)?i:[],t)}return this[n](function(n){return e.apply(gu(n)?n:[],t)})}}),Kr(gr.prototype,function(t,e){var n=dr[e];if(n){var r=n.name+"";fe.call(ir,r)||(ir[r]=[]),ir[r].push({name:e,func:n})}}),ir[ho(r,m).name]=[{name:"wrapper",func:r}],gr.prototype.clone=function(){var t=new gr(this.__wrapped__);return t.__actions__=no(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=no(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=no(this.__views__),t},gr.prototype.reverse=function(){if(this.__filtered__){var t=new gr(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},gr.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=gu(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Vn(e,t+a);break;case"takeRight":t=Wn(t,e-a)}}return{start:t,end:e}}(0,i,this.__views__),a=o.start,u=o.end,s=u-a,c=r?u:a-1,f=this.__iteratees__,l=f.length,p=0,d=Vn(s,this.__takeCount__);if(!n||!r&&i==s&&d==s)return Bi(t,this.__actions__);var h=[];t:for(;s--&&p<d;){for(var v=-1,m=t[c+=e];++v<l;){var g=f[v],y=g.iteratee,_=g.type,b=y(m);if(_==j)m=b;else if(!b){if(_==T)continue t;break t}}h[p++]=m}return h},dr.prototype.at=Ba,dr.prototype.chain=function(){return Fa(this)},dr.prototype.commit=function(){return new mr(this.value(),this.__chain__)},dr.prototype.next=function(){this.__values__===r&&(this.__values__=Fu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?r:this.__values__[this.__index__++]}},dr.prototype.plant=function(t){for(var e,n=this;n instanceof vr;){var i=pa(n);i.__index__=0,i.__values__=r,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e},dr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof gr){var e=t;return this.__actions__.length&&(e=new gr(this)),(e=e.reverse()).__actions__.push({func:Ua,args:[Oa],thisArg:r}),new mr(e,this.__chain__)}return this.thru(Oa)},dr.prototype.toJSON=dr.prototype.valueOf=dr.prototype.value=function(){return Bi(this.__wrapped__,this.__actions__)},dr.prototype.first=dr.prototype.head,ln&&(dr.prototype[ln]=function(){return this}),dr}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Ee._=Mn,define(function(){return Mn})):Ne?((Ne.exports=Mn)._=Mn,Me._=Mn):Ee._=Mn}).call(this)}).call(this,n(5),n(36)(t))},function(t,e,n){"use strict";e.__esModule=!0,e.extend=u,e.indexOf=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},e.escapeExpression=function(t){if("string"!=typeof t){if(t&&t.toHTML)return t.toHTML();if(null==t)return"";if(!t)return t+"";t=""+t}if(!o.test(t))return t;return t.replace(i,a)},e.isEmpty=function(t){return!t&&0!==t||!(!f(t)||0!==t.length)},e.createFrame=function(t){var e=u({},t);return e._parent=t,e},e.blockParams=function(t,e){return t.path=e,t},e.appendContextPath=function(t,e){return(t?t+".":"")+e};var r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},i=/[&<>"'`=]/g,o=/[&<>"'`=]/;function a(t){return r[t]}function u(t){for(var e=1;e<arguments.length;e++)for(var n in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],n)&&(t[n]=arguments[e][n]);return t}var s=Object.prototype.toString;e.toString=s;var c=function(t){return"function"==typeof t};c(/x/)&&(e.isFunction=c=function(t){return"function"==typeof t&&"[object Function]"===s.call(t)}),e.isFunction=c;var f=Array.isArray||function(t){return!(!t||"object"!=typeof t)&&"[object Array]"===s.call(t)};e.isArray=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(19).default.create({headers:{requesttoken:OC.requestToken}});e.default=r},function(t,e,n){"use strict";(function(t,n){
/*!
* Vue.js v2.6.10
* (c) 2014-2019 Evan You
@@ -31,5 +31,5 @@ t.exports=function(t){return null!=t&&null!=t.constructor&&"function"==typeof t.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-o.a.prototype.t=t,o.a.prototype.n=n,o.a.prototype.OC=OC,o.a.prototype.OCA=OCA;var v=document.getElementsByClassName("searchbox"),m=document.createElement("div");m.setAttribute("id","notifications"),Array.prototype.map.call(v,function(t){"FORM"===t.nodeName&&t.insertAdjacentHTML("afterend",m.outerHTML)});r.default=new o.a({el:"#notifications",name:"NotificationsRoot",render:function(t){return t(h)}})},function(t,e,n){"use strict";function r(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],u={id:t+":"+i,css:o[1],media:o[2],sourceMap:o[3]};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}n.r(e),n.d(e,"default",function(){return h});var i="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!i)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=i&&(document.head||document.getElementsByTagName("head")[0]),u=null,s=0,c=!1,f=function(){},l=null,p="data-vue-ssr-id",d="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,i){c=n,l=i||{};var a=r(t,e);return v(a),function(e){for(var n=[],i=0;i<a.length;i++){var u=a[i];(s=o[u.id]).refs--,n.push(s)}e?v(a=r(t,e)):a=[];for(i=0;i<n.length;i++){var s;if(0===(s=n[i]).refs){for(var c=0;c<s.parts.length;c++)s.parts[c]();delete o[s.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],r=o[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(g(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(i=0;i<n.parts.length;i++)a.push(g(n.parts[i]));o[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function g(t){var e,n,r=document.querySelector("style["+p+'~="'+t.id+'"]');if(r){if(c)return f;r.parentNode.removeChild(r)}if(d){var i=s++;r=u||(u=m()),e=b.bind(null,r,i,!1),n=b.bind(null,r,i,!0)}else r=m(),e=function(t,e){var n=e.css,r=e.media,i=e.sourceMap;r&&t.setAttribute("media",r);l.ssrId&&t.setAttribute(p,e.id);i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}var y,_=(y=[],function(t,e){return y[t]=e,y.filter(Boolean).join("\n")});function b(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=_(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}}]);
+o.a.prototype.t=t,o.a.prototype.n=n,o.a.prototype.OC=OC,o.a.prototype.OCA=OCA;var v=document.getElementsByClassName("searchbox"),m=document.createElement("div");m.setAttribute("id","notifications"),Array.prototype.map.call(v,function(t){"FORM"===t.nodeName&&t.insertAdjacentHTML("afterend",m.outerHTML)});r.default=new o.a({el:"#notifications",name:"NotificationsRoot",render:function(t){return t(h)}})},function(t,e,n){"use strict";function r(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],u={id:t+":"+i,css:o[1],media:o[2],sourceMap:o[3]};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}n.r(e),n.d(e,"default",function(){return h});var i="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!i)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=i&&(document.head||document.getElementsByTagName("head")[0]),u=null,s=0,c=!1,f=function(){},l=null,p="data-vue-ssr-id",d="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,i){c=n,l=i||{};var a=r(t,e);return v(a),function(e){for(var n=[],i=0;i<a.length;i++){var u=a[i];(s=o[u.id]).refs--,n.push(s)}e?v(a=r(t,e)):a=[];for(i=0;i<n.length;i++){var s;if(0===(s=n[i]).refs){for(var c=0;c<s.parts.length;c++)s.parts[c]();delete o[s.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],r=o[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(g(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(i=0;i<n.parts.length;i++)a.push(g(n.parts[i]));o[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function g(t){var e,n,r=document.querySelector("style["+p+'~="'+t.id+'"]');if(r){if(c)return f;r.parentNode.removeChild(r)}if(d){var i=s++;r=u||(u=m()),e=b.bind(null,r,i,!1),n=b.bind(null,r,i,!0)}else r=m(),e=w.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}var y,_=(y=[],function(t,e){return y[t]=e,y.filter(Boolean).join("\n")});function b(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=_(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function w(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),l.ssrId&&t.setAttribute(p,e.id),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}]);
//# sourceMappingURL=notifications.js.map \ No newline at end of file
diff --git a/js/notifications.js.map b/js/notifications.js.map
index c7ce02e..c0b647d 100644
--- a/js/notifications.js.map
+++ b/js/notifications.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/nextcloud-axios/dist/client.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./src/App.vue?7eb8","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/templates/file.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./src/templates/userLocal.handlebars","webpack:///./src/templates/userRemote.handlebars","webpack:///./src/templates/unkown.handlebars","webpack:///./src/templates/unkownLink.handlebars","webpack:///./src/App.vue?819c","webpack:///./src/App.vue?22af","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/components/Action.vue","webpack:///src/components/Action.vue","webpack:///./src/components/Action.vue?3b93","webpack:///./src/richObjectStringParser.js","webpack:///./src/App.vue?7e76","webpack:///src/App.vue","webpack:///./src/components/Notification.vue","webpack:///src/components/Notification.vue","webpack:///./src/components/Notification.vue?99dc","webpack:///./src/App.vue","webpack:///./src/App.vue?f42d","webpack:///./src/init.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","undefined","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","e","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","args","arrayAggregator","array","setter","iteratee","accumulator","index","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","string","test","mapToArray","map","size","overArg","transform","arg","replaceHolders","placeholder","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","unescapeHtmlChar","_","runInContext","context","uid","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","this","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","push","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","slice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","charAt","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","flatten","otherFunc","type","getValue","stubArray","hasPath","hasFunc","isLength","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","target","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","amd","len","escapeExpression","toHTML","possible","badChars","escapeChar","createFrame","frame","_parent","blockParams","params","ids","appendContextPath","contextPath","client","default","headers","requesttoken","OC","requestToken","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","_toString","isValidArrayIndex","isPromise","then","catch","JSON","stringify","makeMap","expectsLowerCase","list","isBuiltInTag","isReservedAttribute","arr","item","hasOwn","cached","camelizeRE","camelize","hyphenateRE","hyphenate","ctx","boundFn","_length","ret","to","_from","toObject","res","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","writable","configurable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","_Set","hasSymbol","Reflect","ownKeys","warn","Dep","subs","addSub","sub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","children","text","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayMethods","original","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","src","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","items","strats","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","hooks","dedupeHooks","mergeAssets","hook","key$1","methods","inject","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","console","error","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","event","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","isTextNode","shift","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","createElement","cloneAndMarkFunctionalResult","renderContext","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reason","component","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","style","class","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","j","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","createEvent","timeStamp","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","use","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","selected","querySelector","nodeOps","tagName","multiple","setAttribute","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","parseFilters","exp","prev","filters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","msg","pluckModuleFunction","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","events","right","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","valueExpression","assignment","genAssignmentCode","eof","isStringStart","parseString","parseBracket","parseModel","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","open","close","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","html","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","warn$2","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","rawAttrsMap","parse","isPreTag","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","element","trimEndingWhitespace","processed","processElement","if","elseif","else","addIfCondition","block","forbidden","findPrevElement","slotScope","slotTarget","lastNode","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","all","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","unarySlash","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","parseHTML","comments","outputSourceRange","start$1","ieNSBug","ieNSPrefix","guardIESVGBug","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","tagRE","tokenValue","tokens","rawTokens","parseText","processKey","for","checkInFor","processRef","slotTargetDynamic","getRawBindingAttr","slotBinding","getSlotName","slotBinding$1","ref$1","dynamic$1","slotContainer","processSlotContent","slotName","processComponent","syncGen","isDynamic","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","alias","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","code","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","static","isDirectChildOfTemplateFor","l$1","markStaticRoots","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","esc","tab","space","up","down","keyNames","genGuard","modifierCode","stop","prevent","ctrl","alt","meta","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","keyCode","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","state","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","bind$$1","genSlot","componentName","genData$2","genComponent","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","needRuntime","hasRuntime","gen","genDirectives","containsSlotChild","needsKey","generatedSlots","genScopedSlot","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","staticProps","dynamicProps","createFunction","errors","createCompileToFunctionFn","compile","compiled","fnGenErrors","baseCompile","div","finalOptions","tips","tip","compileToFunctions","getShouldDecode","href","idToTemplate","mount","documentElement","outerHTML","container","getOuterHTML","g","errorProps","Exception","loc","line","column","idx","captureStackTrace","lineNumber","nop","content","locals","utils","encode","encodeURIComponent","url","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","send","enhanceError","config1","config2","Cancel","_interopRequireDefault","HandlebarsEnvironment","_utils","_exception2","_helpers","_decorators","_logger2","COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","5","6","7","helpers","decorators","registerDefaultHelpers","registerDefaultDecorators","logger","log","registerHelper","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","Axios","mergeConfig","createInstance","defaultConfig","instance","axios","instanceConfig","CancelToken","isCancel","promises","InterceptorManager","dispatchRequest","interceptors","fulfilled","rejected","getUri","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","isAxiosError","description","fileName","columnNumber","ignoreDuplicateOf","parsed","substr","originURL","msie","urlParsingNode","resolveURL","protocol","host","hostname","port","pathname","location","requestURL","write","expires","domain","secure","cookie","toGMTString","decodeURIComponent","relativeURL","executor","resolvePromise","token","webpackPolyfill","deprecate","Handlebars","depth0","helper","alias1","nullContext","alias2","helperMissing","alias4","link","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","SafeString","VM","spec","inst","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","inverse","_exception","execIteration","field","priorKey","conditional","includeZero","level","_decoratorsInline2","_decoratorsInline","methodMap","lookupLevel","levelMap","_len","_key","checkRevision","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","templateSpec","main","decorator","main_d","compiler","strict","lookup","depths","lambda","invokePartial","resolvePartial","compilerOptions","indent","lines","programs","program","declaredBlockParams","programWrapper","wrapProgram","param","seal","_setup","useData","useBlockParams","useDepths","executeDecorators","isTop","usePartial","useDecorators","_child","currentPartialBlock","partialBlock","prog","currentDepths","$Handlebars","useSourceMap","cssMapping","sourceMapping","sourceMap","base64","sourceURLs","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","script","attachEvent","task","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","_h","primary","onClickActionButton","label","avatarsEnabled","fileTemplate","userLocalTemplate","userRemoteTemplate","unknownTemplate","unknownLinkTemplate","parseMessage","parameters","escapeHTML","parameter","parseParameter","parseFileParameter","server","lastSlashPosition","firstSlashPosition","_vm","notificationId","timestamp","absoluteDate","relativeDate","onDismissNotification","icon","renderedSubject","onClickMessage","collapsed","isCollapsedMessage","renderedMessage","shutdown","hasNotifications","notifications","iconPath","notification_id","object_id","object_type","onRemove","onDismissAll","OCA","searchBox","getElementsByClassName","notificationsBell","nodeName","insertAdjacentHTML","App","listToStyles","parentId","newStyles","part","media","hasDocument","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","ssrId","styleSheet","textStore","replaceText","replacement","cssNode"],"mappings":"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","file":"notifications.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;',\n '=': '&#x3D;'\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQ3ZCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRTdCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFtQjtBQUMzQyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQUlNLFVBQVUsR0FKaEIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7R0FDcEYsQ0FBQztDQUNIO1FBQ08sVUFBVSxHQUFWLFVBQVU7Ozs7O0FBSVgsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFTLEtBQUssRUFBRTtBQUN0RCxTQUFPLEFBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUFHLEtBQUssQ0FBQztDQUNqRyxDQUFDOzs7OztBQUdLLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUdNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUFFLFdBQU8sTUFBTSxDQUFDO0dBQUU7QUFDOUMsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYD1dLztcblxuZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHtcbiAgcmV0dXJuIGVzY2FwZVtjaHJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iai8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgfTtcbn1cbmV4cG9ydCB7aXNGdW5jdGlvbn07XG4vKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpID8gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XScgOiBmYWxzZTtcbn07XG5cbi8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGFycmF5W2ldID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgeyByZXR1cm4gc3RyaW5nOyB9XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkge1xuICBsZXQgZnJhbWUgPSBleHRlbmQoe30sIG9iamVjdCk7XG4gIGZyYW1lLl9wYXJlbnQgPSBvYmplY3Q7XG4gIHJldHVybiBmcmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7XG4gIHBhcmFtcy5wYXRoID0gaWRzO1xuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgsIGlkKSB7XG4gIHJldHVybiAoY29udGV4dFBhdGggPyBjb250ZXh0UGF0aCArICcuJyA6ICcnKSArIGlkO1xufVxuIl19\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = require(\"axios\");\nvar client = axios_1.default.create({\n headers: {\n requesttoken: OC.requestToken\n }\n});\nexports.default = client;\n","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n',\n '&#9;': '\\t',\n '&#39;': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (process.env.NODE_ENV !== 'production') {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*(?:[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf('&#10;') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: process.env.NODE_ENV !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","'use strict';\n\nexports.__esModule = true;\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n column = undefined;\n if (loc) {\n line = loc.start.line;\n column = loc.start.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n } else {\n this.column = column;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkcsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDdEIsSUFBSSxZQUFBO01BQ0osTUFBTSxZQUFBLENBQUM7QUFDWCxNQUFJLEdBQUcsRUFBRTtBQUNQLFFBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7O0FBRTFCLFdBQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7R0FDeEM7O0FBRUQsTUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7O0FBRzFELE9BQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2hELFFBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDOUM7OztBQUdELE1BQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFNBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSTtBQUNGLFFBQUksR0FBRyxFQUFFO0FBQ1AsVUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7QUFJdkIsVUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO0FBQ3pCLGNBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwQyxlQUFLLEVBQUUsTUFBTTtBQUNiLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7T0FDdEI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgICAgbGluZSxcbiAgICAgIGNvbHVtbjtcbiAgaWYgKGxvYykge1xuICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcblxuICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKG5vcCkge1xuICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi9cbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV4Y2VwdGlvbjtcbiJdfQ==\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"997ce7ec\", content, true, {});","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar VERSION = '4.1.2';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 7;\n\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQTRDLFNBQVM7O3lCQUMvQixhQUFhOzs7O3VCQUNFLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNuQyxVQUFVOzs7O0FBRXRCLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFDeEIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxVQUFVO0NBQ2QsQ0FBQzs7O0FBRUYsSUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsTUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixNQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLGtDQUF1QixJQUFJLENBQUMsQ0FBQztBQUM3Qix3Q0FBMEIsSUFBSSxDQUFDLENBQUM7Q0FDakM7O0FBRUQscUJBQXFCLENBQUMsU0FBUyxHQUFHO0FBQ2hDLGFBQVcsRUFBRSxxQkFBcUI7O0FBRWxDLFFBQU0scUJBQVE7QUFDZCxLQUFHLEVBQUUsb0JBQU8sR0FBRzs7QUFFZixnQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDakMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQUUsY0FBTSwyQkFBYyx5Q0FBeUMsQ0FBQyxDQUFDO09BQUU7QUFDM0Usb0JBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsVUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDekI7R0FDRjtBQUNELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDM0I7O0FBRUQsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFFBQUksZ0JBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxvQkFBTyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCLE1BQU07QUFDTCxVQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNsQyxjQUFNLHlFQUEwRCxJQUFJLG9CQUFpQixDQUFDO09BQ3ZGO0FBQ0QsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDL0I7R0FDRjtBQUNELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDNUI7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFBRSxjQUFNLDJCQUFjLDRDQUE0QyxDQUFDLENBQUM7T0FBRTtBQUM5RSxvQkFBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM1QjtHQUNGO0FBQ0QscUJBQW1CLEVBQUUsNkJBQVMsSUFBSSxFQUFFO0FBQ2xDLFdBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM5QjtDQUNGLENBQUM7O0FBRUssSUFBSSxHQUFHLEdBQUcsb0JBQU8sR0FBRyxDQUFDOzs7UUFFcEIsV0FBVztRQUFFLE1BQU0iLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlRnJhbWUsIGV4dGVuZCwgdG9TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdEhlbHBlcnN9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnN9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4xLjInO1xuZXhwb3J0IGNvbnN0IENPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAnXG59O1xuXG5jb25zdCBvYmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMsIGRlY29yYXRvcnMpIHtcbiAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTtcbiAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9O1xuICB0aGlzLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzIHx8IHt9O1xuXG4gIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7XG4gIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyk7XG59XG5cbkhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsXG5cbiAgbG9nZ2VyOiBsb2dnZXIsXG4gIGxvZzogbG9nZ2VyLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5oZWxwZXJzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUsIHBhcnRpYWwpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oYEF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCBcIiR7bmFtZX1cIiBhcyB1bmRlZmluZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfVxufTtcblxuZXhwb3J0IGxldCBsb2cgPSBsb2dnZXIubG9nO1xuXG5leHBvcnQge2NyZWF0ZUZyYW1lLCBsb2dnZXJ9O1xuIl19\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<a class=\\\"filename has-tooltip\\\" href=\\\"\"\n + alias4(((helper = (helper = helpers.link || (depth0 != null ? depth0.link : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"link\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" title=\\\"\"\n + alias4(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a>\\n\";\n},\"useData\":true});","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7eUNBQXVDLGdDQUFnQzs7OzsyQkFDOUMsZ0JBQWdCOzs7O29DQUNQLDBCQUEwQjs7Ozt5QkFDckMsY0FBYzs7OzswQkFDYixlQUFlOzs7OzZCQUNaLGtCQUFrQjs7OzsyQkFDcEIsZ0JBQWdCOzs7O0FBRWxDLFNBQVMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0FBQy9DLHlDQUEyQixRQUFRLENBQUMsQ0FBQztBQUNyQywyQkFBYSxRQUFRLENBQUMsQ0FBQztBQUN2QixvQ0FBc0IsUUFBUSxDQUFDLENBQUM7QUFDaEMseUJBQVcsUUFBUSxDQUFDLENBQUM7QUFDckIsMEJBQVksUUFBUSxDQUFDLENBQUM7QUFDdEIsNkJBQWUsUUFBUSxDQUFDLENBQUM7QUFDekIsMkJBQWEsUUFBUSxDQUFDLENBQUM7Q0FDeEIiLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBlcnMvZWFjaCc7XG5pbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnO1xuaW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnO1xuaW1wb3J0IHJlZ2lzdGVyTG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnO1xuaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9tICcuL2hlbHBlcnMvd2l0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7XG4gIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpO1xuICByZWdpc3RlcldpdGgoaW5zdGFuY2UpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBc0QsVUFBVTs7cUJBRWpELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLGVBQU8sR0FBRyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztPQUN4Qjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGNyZWF0ZUZyYW1lLCBpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgbGV0IGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHtkYXRhOiBkYXRhfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else {\n var priorKey = undefined;\n\n for (var key in context) {\n if (context.hasOwnProperty(key)) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n }\n }\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQUErRSxVQUFVOzt5QkFDbkUsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixZQUFNLDJCQUFjLDZCQUE2QixDQUFDLENBQUM7S0FDcEQ7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDekIsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRTtRQUNSLElBQUksWUFBQTtRQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixRQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixpQkFBVyxHQUFHLHlCQUFrQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ2pGOztBQUVELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDaEIsVUFBSSxHQUFHLG1CQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQzs7QUFFRCxhQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtBQUN6QyxVQUFJLElBQUksRUFBRTtBQUNSLFlBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ2pCLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUN6QixZQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7O0FBRW5CLFlBQUksV0FBVyxFQUFFO0FBQ2YsY0FBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQ3hDO09BQ0Y7O0FBRUQsU0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFlBQUksRUFBRSxJQUFJO0FBQ1YsbUJBQVcsRUFBRSxtQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDL0UsQ0FBQyxDQUFDO0tBQ0o7O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNO0FBQ0wsWUFBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixhQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtBQUN2QixjQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0IsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0w7U0FDRjtBQUNELFlBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix1QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNBcnJheSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29udGV4dFBhdGg7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nO1xuICAgIH1cblxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH1cblxuICAgIGlmIChvcHRpb25zLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3RcbiAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmlvcktleSA9IGtleTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFBYyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDdkY7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgaGVscGVyOiBcIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBa0MsVUFBVTs7cUJBRTdCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLGtCQUFXLFdBQVcsQ0FBQyxFQUFFO0FBQUUsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0FBS3RFLFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFdBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztHQUN2SCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJpZi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbihjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChpc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeyBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7IH1cblxuICAgIC8vIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS5cbiAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZVxuICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuXG4gICAgaWYgKCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCkgfHwgaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwge2ZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4sIGhhc2g6IG9wdGlvbnMuaGFzaH0pO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVMsSUFBSSxDQUFDLENBQUM7R0FDeEIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIGxldCBsZXZlbCA9IDE7XG4gICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7XG4gICAgfVxuICAgIGFyZ3NbMF0gPSBsZXZlbDtcblxuICAgIGluc3RhbmNlLmxvZyguLi4gYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field) {\n if (!obj) {\n return obj;\n }\n if (field === 'constructor' && !obj.propertyIsEnumerable(field)) {\n return undefined;\n }\n return obj[field];\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JELFFBQUksQ0FBQyxHQUFHLEVBQUU7QUFDUixhQUFPLEdBQUcsQ0FBQztLQUNaO0FBQ0QsUUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQy9ELGFBQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0QsV0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7R0FDbkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9va3VwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uKG9iaiwgZmllbGQpIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAnY29uc3RydWN0b3InICYmICFvYmoucHJvcGVydHlJc0VudW1lcmFibGUoZmllbGQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gb2JqW2ZpZWxkXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUErRSxVQUFVOztxQkFFMUUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLENBQUMsZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNyQixVQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFVBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQy9CLFlBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2hGOztBQUVELGFBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtBQUNqQixZQUFJLEVBQUUsSUFBSTtBQUNWLG1CQUFXLEVBQUUsbUJBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7T0FDaEUsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QjtHQUNGLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FwcGVuZENvbnRleHRQYXRoLCBibG9ja1BhcmFtcywgY3JlYXRlRnJhbWUsIGlzRW1wdHksIGlzRnVuY3Rpb259IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghaXNFbXB0eShjb250ZXh0KSkge1xuICAgICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXFCLFVBQVU7O3FCQUVoQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXh0ZW5kfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVyRGVjb3JhdG9yKCdpbmxpbmUnLCBmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykge1xuICAgIGxldCByZXQgPSBmbjtcbiAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7XG4gICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9O1xuICAgICAgcmV0ID0gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy5cbiAgICAgICAgbGV0IG9yaWdpbmFsID0gY29udGFpbmVyLnBhcnRpYWxzO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBleHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7XG4gICAgICAgIGxldCByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3JpZ2luYWw7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n if (!console[method]) {\n // eslint-disable-line no-console\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFzQixTQUFTOztBQUUvQixJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFDL0UsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxVQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFOztBQUNwQixjQUFNLEdBQUcsS0FBSyxDQUFDO09BQ2hCOzt3Q0FQbUIsT0FBTztBQUFQLGVBQU87OztBQVEzQixhQUFPLENBQUMsTUFBTSxPQUFDLENBQWYsT0FBTyxFQUFZLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO0dBQ0Y7Q0FDRixDQUFDOztxQkFFYSxNQUFNIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5kZXhPZn0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name) {\n if (!(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj);\n }\n return obj[name];\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n if (depths[i] && depths[i][name] != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n merge: function merge(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n container.helpers = container.merge(options.helpers, env.helpers);\n\n if (templateSpec.usePartial) {\n container.partials = container.merge(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = container.merge(options.decorators, env.decorators);\n }\n } else {\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBQzhCLFFBQVE7O0FBRWxFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztNQUN2RCxlQUFlLDBCQUFvQixDQUFDOztBQUUxQyxNQUFJLGdCQUFnQixLQUFLLGVBQWUsRUFBRTtBQUN4QyxRQUFJLGdCQUFnQixHQUFHLGVBQWUsRUFBRTtBQUN0QyxVQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1VBQ25ELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVELFlBQU0sMkJBQWMseUZBQXlGLEdBQ3ZHLHFEQUFxRCxHQUFHLGVBQWUsR0FBRyxtREFBbUQsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNoSyxNQUFNOztBQUVMLFlBQU0sMkJBQWMsd0ZBQXdGLEdBQ3RHLGlEQUFpRCxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNuRjtHQUNGO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcs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QUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUYsU0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDM0I7QUFDRCxTQUFPLElBQUksQ0FBQztDQUNiIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgQ09NUElMRVJfUkVWSVNJT04sIFJFVklTSU9OX0NIQU5HRVMsIGNyZWF0ZUZyYW1lIH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsXG4gICAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChjb21waWxlclJldmlzaW9uICE9PSBjdXJyZW50UmV2aXNpb24pIHtcbiAgICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikge1xuICAgICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgcnVudGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlvdXIgcnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcpLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIWVudikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpO1xuICB9XG4gIGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWMubWFpbl9kO1xuXG4gIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93XG4gIC8vIGZvciBleHRlcm5hbCB1c2VycyB0byBvdmVycmlkZSB0aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuXG4gIGVudi5WTS5jaGVja1JldmlzaW9uKHRlbXBsYXRlU3BlYy5jb21waWxlcik7XG5cbiAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7XG4gICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkge1xuICAgICAgb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBpbGUocGFydGlhbCwgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucywgZW52KTtcbiAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXShjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSkge1xuICAgICAgaWYgKCEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaik7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqW25hbWVdO1xuICAgIH0sXG4gICAgbG9va3VwOiBmdW5jdGlvbihkZXB0aHMsIG5hbWUpIHtcbiAgICAgIGNvbnN0IGxlbiA9IGRlcHRocy5sZW5ndGg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChkZXB0aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgICAgZm4gPSB0aGlzLmZuKGkpO1xuICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2U6IGZ1bmN0aW9uKHBhcmFtLCBjb21tb24pIHtcbiAgICAgIGxldCBvYmogPSBwYXJhbSB8fCBjb21tb247XG5cbiAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgKHBhcmFtICE9PSBjb21tb24pKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFpbihjb250ZXh0LyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICB9XG4gICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0LmlzVG9wID0gdHJ1ZTtcblxuICByZXQuX3NldHVwID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTtcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7XG4gICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9ycywgZW52LmRlY29yYXRvcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1swXSAmJiAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihjb250YWluZXIsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2NrUGFyYW1zKSxcbiAgICAgICAgY3VycmVudERlcHRocyk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuXG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7IHJldHVybiAnJzsgfVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKHByb2csIHByb3BzLCBjb250YWluZXIsIGRlcHRocyAmJiBkZXB0aHNbMF0sIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG4iXX0=\n","/* global window */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOztBQUVsQyxNQUFJLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU07TUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRWxDLFlBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBVztBQUNqQyxRQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ2xDLFVBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQy9CO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LFxuICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<span class=\\\"avatar-name-wrapper\\\" data-user=\\\"\"\n + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"><div class=\\\"avatar\\\" data-user=\\\"\"\n + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" data-user-display-name=\\\"\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"></div><strong>\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</strong></span>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"<strong>\"\n + container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</strong>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"<strong>\"\n + container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</strong>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<a href=\\\"\"\n + alias4(((helper = (helper = helpers.link || (depth0 != null ? depth0.link : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"link\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a>\\n\";\n},\"useData\":true});","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\"","exports = module.exports = require(\"../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.fade-enter-active[data-v-5caaaa26],\\n.fade-leave-active[data-v-5caaaa26],\\n.fade-collapse-enter-active[data-v-5caaaa26],\\n.fade-collapse-leave-active[data-v-5caaaa26] {\\n\\ttransition: opacity var(--animation-quick), max-height var(--animation-quick);\\n}\\n.fade-collapse-enter[data-v-5caaaa26],\\n.fade-collapse-leave-to[data-v-5caaaa26] {\\n\\topacity: 0;\\n\\tmax-height: 0;\\n}\\n.fade-enter[data-v-5caaaa26],\\n.fade-leave-to[data-v-5caaaa26] {\\n\\topacity: 0;\\n}\\n\", \"\"]);\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = modules[_i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./Action.vue?vue&type=template&id=2fa88a3d&\"\nimport script from \"./Action.vue?vue&type=script&lang=js&\"\nexport * from \"./Action.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n\t<button class=\"action-button pull-right\" :class=\"{ primary: primary }\"\n\t\t:data-type=\"type\" :data-href=\"link\" @click=\"onClickActionButton\">\n\t\t{{ label }}\n\t</button>\n</template>\n\n<script>\nimport axios from 'nextcloud-axios'\nexport default {\n\tname: 'Action',\n\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tlink: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonClickActionButton: function() {\n\t\t\tconst type = this.type || 'GET'\n\t\t\tif (type === 'WEB') {\n\t\t\t\tOC.redirect(this.link)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\taxios({\n\t\t\t\tmethod: type,\n\t\t\t\turl: this.link\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.$parent._$el.fadeOut(OC.menuSpeed)\n\t\t\t\t\tthis.$parent.$emit('remove')\n\t\t\t\t\t$('body').trigger(new $.Event('OCA.Notification.Action', {\n\t\t\t\t\t\tnotification: this.$parent,\n\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\turl: this.link,\n\t\t\t\t\t\t\ttype: type\n\t\t\t\t\t\t}\n\t\t\t\t\t}))\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tOC.Notification.showTemporary(t('notifications', 'Failed to perform action'))\n\t\t\t\t})\n\t\t}\n\t}\n}\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"action-button pull-right\",class:{ primary: _vm.primary },attrs:{\"data-type\":_vm.type,\"data-href\":_vm.link},on:{\"click\":_vm.onClickActionButton}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.label)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * This file is licensed under the Affero General Public License version 3 or\n * later. See the COPYING file.\n */\n\n/* global t, escapeHTML */\n\nimport _ from 'lodash'\n\nexport default {\n\tavatarsEnabled: true,\n\n\tfileTemplate: require('./templates/file.handlebars'),\n\n\tuserLocalTemplate: require('./templates/userLocal.handlebars'),\n\tuserRemoteTemplate: require('./templates/userRemote.handlebars'),\n\n\tunknownTemplate: require('./templates/unkown.handlebars'),\n\tunknownLinkTemplate: require('./templates/unkownLink.handlebars'),\n\n\t/**\n\t * @param {string} message The rich object message with placeholders\n\t * @param {Object} parameters The rich objects to be parsed into the message\n\t * @returns {string} The HTML to render this message\n\t */\n\tparseMessage: function(message, parameters) {\n\t\tmessage = escapeHTML(message)\n\t\tvar self = this\n\t\tvar regex = /\\{([a-z\\-_0-9]+)\\}/gi\n\t\tvar matches = message.match(regex)\n\n\t\t_.each(matches, function(parameter) {\n\t\t\tparameter = parameter.substring(1, parameter.length - 1)\n\t\t\tif (!parameters.hasOwnProperty(parameter) || !parameters[parameter]) {\n\t\t\t\t// Malformed translation?\n\t\t\t\tconsole.error('Potential malformed ROS string: parameter {' + parameter + '} was found in the string but is missing from the parameter list')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar parsed = self.parseParameter(parameters[parameter])\n\t\t\tmessage = message.replace('{' + parameter + '}', parsed)\n\t\t})\n\n\t\treturn message.replace(new RegExp('\\n', 'g'), '<br>')\n\t},\n\n\t/**\n\t * @param {Object} parameter Rich Object\n\t * @param {string} parameter.type Type of the object\n\t * @param {string} parameter.id Identifier of the object\n\t * @param {string} parameter.name Name of the object\n\t * @param {string} parameter.link Absolute link to the object\n\t * @param {string} [parameter.server] Server the user is on\n\t * @param {string} [parameter.path] User visible path of the file\n\t * @returns {string} The HTML to render this object\n\t */\n\tparseParameter: function(parameter) {\n\t\tswitch (parameter.type) {\n\t\tcase 'file':\n\t\t\treturn this.parseFileParameter(parameter).trim('\\n')\n\n\t\tcase 'user':\n\t\t\tif (_.isUndefined(parameter.server)) {\n\t\t\t\treturn this.userLocalTemplate(parameter).trim('\\n')\n\t\t\t}\n\n\t\t\treturn this.userRemoteTemplate(parameter).trim('\\n')\n\n\t\tdefault:\n\t\t\tif (!_.isUndefined(parameter.link)) {\n\t\t\t\treturn this.unknownLinkTemplate(parameter).trim('\\n')\n\t\t\t}\n\n\t\t\treturn this.unknownTemplate(parameter).trim('\\n')\n\t\t}\n\t},\n\n\t/**\n\t * @param {Object} parameter Rich Object file\n\t * @param {string} parameter.id Numeric ID of the file\n\t * @param {string} parameter.name Name of the file/folder\n\t * @param {string} parameter.path User visible path of the file\n\t * @param {string} parameter.link Absolute link to the file\n\t * @returns {string} The HTML to render this parameter\n\t */\n\tparseFileParameter: function(parameter) {\n\t\tvar lastSlashPosition = parameter.path.lastIndexOf('/')\n\t\tvar firstSlashPosition = parameter.path.indexOf('/')\n\t\tparameter.path = parameter.path.substring(firstSlashPosition === 0 ? 1 : 0, lastSlashPosition)\n\n\t\treturn this.fileTemplate(_.extend(parameter, {\n\t\t\ttitle: parameter.path.length === 0 ? '' : t('notifications', 'in {path}', parameter)\n\t\t}))\n\t}\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<template>\n\t<div v-if=\"!shutdown\" class=\"notifications\">\n\t\t<div ref=\"button\" class=\"notifications-button menutoggle\" :class=\"{ hasNotifications: notifications.length }\"\n\t\t\ttabindex=\"0\" role=\"button\"\n\t\t\taria-label=\"t('notifications', 'Notifications')\"\n\t\t\taria-haspopup=\"true\" aria-controls=\"notification-container\" aria-expanded=\"false\">\n\t\t\t<img ref=\"icon\" class=\"svg\" alt=\"\"\n\t\t\t\t:title=\"t('notifications', 'Notifications')\" :src=\"iconPath\">\n\t\t</div>\n\t\t<div ref=\"container\" class=\"notification-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<ul v-if=\"notifications.length > 0\" class=\"notification-wrapper\">\n\t\t\t\t\t<transition-group name=\"fade-collapse\" tag=\"li\">\n\t\t\t\t\t\t<notification\n\t\t\t\t\t\t\tv-for=\"(n, index) in notifications\"\n\t\t\t\t\t\t\t:key=\"n.notification_id\"\n\t\t\t\t\t\t\tv-bind=\"n\"\n\t\t\t\t\t\t\t:index=\"index\"\n\t\t\t\t\t\t\t:notification-id=\"n.notification_id\"\n\t\t\t\t\t\t\t:object-id=\"n.object_id\"\n\t\t\t\t\t\t\t:object-type=\"n.object_type\"\n\t\t\t\t\t\t\t@remove=\"onRemove\" />\n\t\t\t\t\t</transition-group>\n\t\t\t\t\t<li v-if=\"notifications.length > 2\">\n\t\t\t\t\t\t<div class=\"dismiss-all\" @click=\"onDismissAll\">\n\t\t\t\t\t\t\t<span class=\"icon icon-close svg\" :title=\"t('notifications', 'Dismiss all notifications')\" /> {{ t('notifications', 'Dismiss all notifications') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t\t<div v-else class=\"emptycontent\">\n\t\t\t\t\t<div class=\"icon icon-notifications-dark\" />\n\t\t\t\t\t<h2>{{ t('notifications', 'No notifications') }}</h2>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Notification from './components/Notification'\nimport axios from 'nextcloud-axios'\nimport _ from 'lodash'\n\nexport default {\n\tname: 'NotificationsList',\n\n\tcomponents: {\n\t\tNotification\n\t},\n\n\tdata: function() {\n\t\treturn {\n\t\t\thadNotifications: false,\n\t\t\tbackgroundFetching: false,\n\t\t\tshutdown: false,\n\t\t\tnotifications: [],\n\n\t\t\t/** @type {number} */\n\t\t\tpollInterval: 30000, // milliseconds\n\n\t\t\t/** @type {number|null} */\n\t\t\tinterval: null\n\t\t}\n\t},\n\n\t_$icon: null,\n\n\tcomputed: {\n\t\ticonPath: function() {\n\t\t\tvar iconPath = 'notifications'\n\n\t\t\tif (this.notifications.length) {\n\t\t\t\tif (this.isRedThemed()) {\n\t\t\t\t\ticonPath += '-red'\n\t\t\t\t}\n\t\t\t\ticonPath += '-new'\n\t\t\t}\n\n\t\t\tif (this.invertedTheme()) {\n\t\t\t\ticonPath += '-dark'\n\t\t\t}\n\n\t\t\treturn OC.imagePath('notifications', iconPath)\n\t\t}\n\t},\n\n\tmounted: function() {\n\t\tthis._$icon = $(this.$refs.icon)\n\n\t\t// Bind the button click event\n\t\tOC.registerMenu($(this.$refs.button), $(this.$refs.container), undefined, true)\n\n\t\t// Initial call to the notification endpoint\n\t\tthis._fetch()\n\n\t\t// Setup the background checker\n\t\tif (oc_config.session_keepalive) {\n\t\t\tthis.interval = setInterval(this._backgroundFetch.bind(this), this.pollInterval)\n\t\t}\n\t},\n\n\tupdated: function() {\n\t\tthis._$icon.attr('src', this.iconPath)\n\n\t\tif (!this.hadNotifications && this.notifications.length) {\n\t\t\tthis._$icon\n\t\t\t\t.animate({ opacity: 0.6 }, 600)\n\t\t\t\t.animate({ opacity: 1 }, 600)\n\t\t\t\t.animate({ opacity: 0.6 }, 600)\n\t\t\t\t.animate({ opacity: 1 }, 600)\n\t\t}\n\n\t\tthis.hadNotifications = this.notifications.length > 0\n\t},\n\n\tmethods: {\n\t\tonDismissAll: function() {\n\t\t\taxios\n\t\t\t\t.delete(OC.linkToOCS('apps/notifications/api/v2', 2) + 'notifications')\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.notifications = []\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tOC.Notification.showTemporary(t('notifications', 'Failed to dismiss all notifications'))\n\t\t\t\t})\n\t\t},\n\t\tonRemove: function(index) {\n\t\t\tthis.notifications.splice(index, 1)\n\t\t},\n\n\t\tinvertedTheme: function() {\n\t\t\treturn OCA.Theming && OCA.Theming.inverted\n\t\t},\n\n\t\tisRedThemed: function() {\n\t\t\tif (OCA.Theming && OCA.Theming.color) {\n\t\t\t\tvar hsl = this.rgbToHsl(OCA.Theming.color.substring(1, 3),\n\t\t\t\t\tOCA.Theming.color.substring(3, 5),\n\t\t\t\t\tOCA.Theming.color.substring(5, 7))\n\t\t\t\tvar h = hsl[0] * 360\n\t\t\t\treturn (h >= 330 || h <= 15) && hsl[1] > 0.7 && (hsl[2] > 0.1 || hsl[2] < 0.6)\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\trgbToHsl: function(r, g, b) {\n\t\t\tr = parseInt(r, 16) / 255; g = parseInt(g, 16) / 255; b = parseInt(b, 16) / 255\n\t\t\tvar max = Math.max(r, g, b); var min = Math.min(r, g, b)\n\t\t\tvar h; var s; var l = (max + min) / 2\n\n\t\t\tif (max === min) {\n\t\t\t\th = s = 0\n\t\t\t} else {\n\t\t\t\tvar d = max - min\n\t\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\t\t\t\tswitch (max) {\n\t\t\t\tcase r: h = (g - b) / d + (g < b ? 6 : 0); break\n\t\t\t\tcase g: h = (b - r) / d + 2; break\n\t\t\t\tcase b: h = (r - g) / d + 4; break\n\t\t\t\t}\n\t\t\t\th /= 6\n\t\t\t}\n\n\t\t\treturn [h, s, l]\n\t\t},\n\n\t\t/**\n\t\t\t * Performs the AJAX request to retrieve the notifications\n\t\t\t */\n\t\t_fetch: function() {\n\t\t\taxios\n\t\t\t\t.get(OC.linkToOCS('apps/notifications/api/v2', 2) + 'notifications')\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.status === 204) {\n\t\t\t\t\t\t// 204 No Content - Intercept when no notifiers are there.\n\t\t\t\t\t\tthis._shutDownNotifications()\n\t\t\t\t\t} else if (!_.isUndefined(response.data) && !_.isUndefined(response.data.ocs) && !_.isUndefined(response.data.ocs.data) && _.isArray(response.data.ocs.data)) {\n\t\t\t\t\t\tthis.notifications = response.data.ocs.data\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.info('data.ocs.data is undefined or not an array')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tif (!err.response) {\n\t\t\t\t\t\tconsole.info('No response received, retrying')\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else if (err.response.status === 503) {\n\t\t\t\t\t\t// 503 - Maintenance mode\n\t\t\t\t\t\tconsole.info('Shutting down notifications: instance is in maintenance mode.')\n\t\t\t\t\t} else if (err.response.status === 404) {\n\t\t\t\t\t\t// 404 - App disabled\n\t\t\t\t\t\tconsole.info('Shutting down notifications: app is disabled.')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.info('Shutting down notifications: [' + err.response.status + '] ' + err.response.statusText)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._shutDownNotifications()\n\t\t\t\t})\n\t\t},\n\n\t\t_backgroundFetch: function() {\n\t\t\tthis.backgroundFetching = true\n\t\t\tthis._fetch()\n\t\t},\n\n\t\t/**\n\t\t\t * The app was disabled or has no notifiers, so we can stop polling\n\t\t\t * And hide the UI as well\n\t\t\t */\n\t\t_shutDownNotifications: function() {\n\t\t\twindow.clearInterval(this.interval)\n\t\t\tthis.shutdown = true\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n\t.fade-enter-active,\n\t.fade-leave-active,\n\t.fade-collapse-enter-active,\n\t.fade-collapse-leave-active {\n\t\ttransition: opacity var(--animation-quick), max-height var(--animation-quick);\n\t}\n\t.fade-collapse-enter,\n\t.fade-collapse-leave-to {\n\t\topacity: 0;\n\t\tmax-height: 0;\n\t}\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n</style>\n","import { render, staticRenderFns } from \"./Notification.vue?vue&type=template&id=54927f33&\"\nimport script from \"./Notification.vue?vue&type=script&lang=js&\"\nexport * from \"./Notification.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n\t<div class=\"notification\" :data-id=\"notificationId\" :data-timestamp=\"timestamp\">\n\t\t<div class=\"notification-heading\">\n\t\t\t<span class=\"notification-time has-tooltip live-relative-timestamp\" :data-timestamp=\"timestamp\" :title=\"absoluteDate\">{{ relativeDate }}</span>\n\t\t\t<div class=\"notification-delete\" @click=\"onDismissNotification\">\n\t\t\t\t<span class=\"icon icon-close svg\" :title=\"t('notifications', 'Dismiss')\" />\n\t\t\t</div>\n\t\t</div>\n\t\t<a v-if=\"useLink\" :href=\"link\" class=\"notification-subject full-subject-link\">\n\t\t\t<span v-if=\"icon\" class=\"image\"><img :src=\"icon\" class=\"notification-icon\"></span>\n\t\t\t<span class=\"text\" v-html=\"renderedSubject\" />\n\t\t</a>\n\t\t<div v-else class=\"notification-subject\">\n\t\t\t<span v-if=\"icon\" class=\"image\"><img :src=\"icon\" class=\"notification-icon\"></span>\n\t\t\t<span class=\"text\" v-html=\"renderedSubject\" />\n\t\t</div>\n\t\t<div v-if=\"message\" class=\"notification-message\" @click=\"onClickMessage\">\n\t\t\t<div class=\"message-container\" :class=\"{ collapsed: isCollapsedMessage }\" v-html=\"renderedMessage\" />\n\t\t\t<div v-if=\"isCollapsedMessage\" class=\"notification-overflow\" />\n\t\t</div>\n\t\t<div v-if=\"actions.length\" class=\"notification-actions\">\n\t\t\t<action v-for=\"(a, i) in actions\" :key=\"i\" v-bind=\"a\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from 'nextcloud-axios'\nimport Action from './Action'\nimport parser from '../richObjectStringParser'\n\nexport default {\n\tname: 'Notification',\n\n\tcomponents: {\n\t\tAction\n\t},\n\n\tprops: {\n\t\tnotificationId: {\n\t\t\ttype: Number,\n\t\t\tdefault: -1,\n\t\t\trequired: true\n\t\t},\n\t\tdatetime: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tapp: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tlink: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tuser: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tmessageRich: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tmessageRichParameters: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault() {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t\trequired: true\n\t\t},\n\t\tsubject: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tsubjectRich: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tsubjectRichParameters: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault() {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t\trequired: true\n\t\t},\n\t\tobjectType: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tobjectId: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tactions: {\n\t\t\ttype: Array,\n\t\t\tdefault() {\n\t\t\t\treturn []\n\t\t\t},\n\t\t\trequired: true\n\t\t},\n\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: -1,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowFullMessage: {\n\t\t\t\ttype: Boolean,\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t}\n\t},\n\n\t_$el: null,\n\n\tcomputed: {\n\t\ttimestamp: function() {\n\t\t\treturn moment(this.datetime).format('X') * 1000\n\t\t},\n\t\tabsoluteDate: function() {\n\t\t\treturn OC.Util.formatDate(this.timestamp)\n\t\t},\n\t\trelativeDate: function() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.timestamp)\n\t\t},\n\t\tuseLink: function() {\n\t\t\treturn this.link && this.renderedSubject.indexOf('<a ') === -1\n\t\t},\n\t\trenderedSubject: function() {\n\t\t\tif (this.subjectRich.length !== 0) {\n\t\t\t\treturn parser.parseMessage(\n\t\t\t\t\tthis.subjectRich.replace(new RegExp('\\n', 'g'), ' '),\n\t\t\t\t\tthis.subjectRichParameters\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn escapeHTML(this.subject).replace(new RegExp('\\n', 'g'), ' ')\n\t\t},\n\t\tisCollapsedMessage: function() {\n\t\t\treturn this.message.length > 200 && !this.showFullMessage\n\t\t},\n\t\trenderedMessage: function() {\n\t\t\tif (this.messageRich.length !== 0) {\n\t\t\t\treturn parser.parseMessage(\n\t\t\t\t\tthis.messageRich,\n\t\t\t\t\tthis.messageRichParameters\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn escapeHTML(this.message).replace(new RegExp('\\n', 'g'), '<br>')\n\t\t}\n\t},\n\n\tmounted: function() {\n\t\tthis._$el = $(this.$el)\n\n\t\tthis._$el.find('.avatar').each(function() {\n\t\t\tvar element = $(this)\n\t\t\tif (element.data('user-display-name')) {\n\t\t\t\telement.avatar(element.data('user'), 21, undefined, false, undefined, element.data('user-display-name'))\n\t\t\t} else {\n\t\t\t\telement.avatar(element.data('user'), 21)\n\t\t\t}\n\t\t})\n\n\t\tthis._$el.find('.avatar-name-wrapper').each(function() {\n\t\t\tvar element = $(this)\n\t\t\tvar avatar = element.find('.avatar')\n\t\t\tvar label = element.find('strong')\n\n\t\t\t$.merge(avatar, label).contactsMenu(element.data('user'), 0, element)\n\t\t})\n\n\t\tthis._$el.find('.has-tooltip').tooltip({\n\t\t\t// container: this.$container.find('.notification-wrapper'),\n\t\t\tplacement: 'bottom'\n\t\t})\n\n\t\t// Parents: TransitionGroup > NotificationsList\n\t\tif (this.$parent.$parent.backgroundFetching) {\n\t\t\tthis._triggerWebNotification()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonClickMessage: function(e) {\n\t\t\tif (e.target.classList.contains('message-container')) {\n\t\t\t\tthis.showFullMessage = !this.showFullMessage\n\t\t\t}\n\t\t},\n\n\t\tonDismissNotification: function() {\n\t\t\taxios\n\t\t\t\t.delete(OC.linkToOCS('apps/notifications/api/v2', 2) + 'notifications/' + this.notificationId)\n\t\t\t\t.then(() => {\n\t\t\t\t\t// this._$el.fadeOut(OC.menuSpeed)\n\t\t\t\t\tthis.$emit('remove', this.index)\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tOC.Notification.showTemporary(t('notifications', 'Failed to dismiss notification'))\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t\t * Check if we do web notifications\n\t\t\t */\n\t\t_triggerWebNotification: function() {\n\t\t\t// Trigger browsers web notification\n\t\t\tif ('Notification' in window) {\n\t\t\t\tif (Notification.permission === 'granted') {\n\t\t\t\t\t// If it's okay let's create a notification\n\t\t\t\t\tthis._createWebNotification()\n\n\t\t\t\t// Otherwise, we need to ask the user for permission\n\t\t\t\t} else if (Notification.permission !== 'denied') {\n\t\t\t\t\tNotification.requestPermission(function(permission) {\n\t\t\t\t\t\t// If the user accepts, let's create a notification\n\t\t\t\t\t\tif (permission === 'granted') {\n\t\t\t\t\t\t\tthis._createWebNotification()\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind(this))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t\t * Create a browser notification\n\t\t\t * @see https://developer.mozilla.org/en/docs/Web/API/notification\n\t\t\t */\n\t\t_createWebNotification: function() {\n\t\t\tvar n = new Notification(this.subject, {\n\t\t\t\ttitle: this.subject,\n\t\t\t\tlang: OC.getLocale(),\n\t\t\t\tbody: this.message,\n\t\t\t\ticon: this.icon,\n\t\t\t\ttag: this.notificationId\n\t\t\t})\n\n\t\t\tif (this.link) {\n\t\t\t\tn.onclick = function(event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\twindow.location.href = this.link\n\t\t\t\t}.bind(this)\n\t\t\t}\n\n\t\t\tsetTimeout(n.close.bind(n), 5000)\n\t\t}\n\t}\n}\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notification\",attrs:{\"data-id\":_vm.notificationId,\"data-timestamp\":_vm.timestamp}},[_c('div',{staticClass:\"notification-heading\"},[_c('span',{staticClass:\"notification-time has-tooltip live-relative-timestamp\",attrs:{\"data-timestamp\":_vm.timestamp,\"title\":_vm.absoluteDate}},[_vm._v(_vm._s(_vm.relativeDate))]),_vm._v(\" \"),_c('div',{staticClass:\"notification-delete\",on:{\"click\":_vm.onDismissNotification}},[_c('span',{staticClass:\"icon icon-close svg\",attrs:{\"title\":_vm.t('notifications', 'Dismiss')}})])]),_vm._v(\" \"),(_vm.useLink)?_c('a',{staticClass:\"notification-subject full-subject-link\",attrs:{\"href\":_vm.link}},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon}})]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.renderedSubject)}})]):_c('div',{staticClass:\"notification-subject\"},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon}})]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.renderedSubject)}})]),_vm._v(\" \"),(_vm.message)?_c('div',{staticClass:\"notification-message\",on:{\"click\":_vm.onClickMessage}},[_c('div',{staticClass:\"message-container\",class:{ collapsed: _vm.isCollapsedMessage },domProps:{\"innerHTML\":_vm._s(_vm.renderedMessage)}}),_vm._v(\" \"),(_vm.isCollapsedMessage)?_c('div',{staticClass:\"notification-overflow\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.actions.length)?_c('div',{staticClass:\"notification-actions\"},_vm._l((_vm.actions),function(a,i){return _c('action',_vm._b({key:i},'action',a,false))}),1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5caaaa26&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5caaaa26\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.shutdown)?_c('div',{staticClass:\"notifications\"},[_c('div',{ref:\"button\",staticClass:\"notifications-button menutoggle\",class:{ hasNotifications: _vm.notifications.length },attrs:{\"tabindex\":\"0\",\"role\":\"button\",\"aria-label\":\"t('notifications', 'Notifications')\",\"aria-haspopup\":\"true\",\"aria-controls\":\"notification-container\",\"aria-expanded\":\"false\"}},[_c('img',{ref:\"icon\",staticClass:\"svg\",attrs:{\"alt\":\"\",\"title\":_vm.t('notifications', 'Notifications'),\"src\":_vm.iconPath}})]),_vm._v(\" \"),_c('div',{ref:\"container\",staticClass:\"notification-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.notifications.length > 0)?_c('ul',{staticClass:\"notification-wrapper\"},[_c('transition-group',{attrs:{\"name\":\"fade-collapse\",\"tag\":\"li\"}},_vm._l((_vm.notifications),function(n,index){return _c('notification',_vm._b({key:n.notification_id,attrs:{\"index\":index,\"notification-id\":n.notification_id,\"object-id\":n.object_id,\"object-type\":n.object_type},on:{\"remove\":_vm.onRemove}},'notification',n,false))}),1),_vm._v(\" \"),(_vm.notifications.length > 2)?_c('li',[_c('div',{staticClass:\"dismiss-all\",on:{\"click\":_vm.onDismissAll}},[_c('span',{staticClass:\"icon icon-close svg\",attrs:{\"title\":_vm.t('notifications', 'Dismiss all notifications')}}),_vm._v(\" \"+_vm._s(_vm.t('notifications', 'Dismiss all notifications'))+\"\\n\\t\\t\\t\\t\\t\")])]):_vm._e()],1):_c('div',{staticClass:\"emptycontent\"},[_c('div',{staticClass:\"icon icon-notifications-dark\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('notifications', 'No notifications')))])])])],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './App'\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\nconst searchBox = document.getElementsByClassName('searchbox')\nlet notificationsBell = document.createElement('div')\nnotificationsBell.setAttribute('id', 'notifications')\n\nArray.prototype.map.call(searchBox, (el) => {\n\tif (el.nodeName !== 'FORM') {\n\t\treturn\n\t}\n\n\tel.insertAdjacentHTML('afterend', notificationsBell.outerHTML)\n})\n\nexport default new Vue({\n\tel: '#notifications',\n\tname: 'NotificationsRoot',\n\trender: h => h(App)\n})\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/nextcloud-axios/dist/client.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./src/App.vue?7eb8","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/templates/file.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./src/templates/userLocal.handlebars","webpack:///./src/templates/userRemote.handlebars","webpack:///./src/templates/unkown.handlebars","webpack:///./src/templates/unkownLink.handlebars","webpack:///./src/App.vue?819c","webpack:///./src/App.vue?22af","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/components/Action.vue","webpack:///src/components/Action.vue","webpack:///./src/components/Action.vue?3b93","webpack:///./src/richObjectStringParser.js","webpack:///./src/App.vue?7e76","webpack:///src/App.vue","webpack:///./src/components/Notification.vue","webpack:///src/components/Notification.vue","webpack:///./src/components/Notification.vue?99dc","webpack:///./src/App.vue","webpack:///./src/App.vue?f42d","webpack:///./src/init.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isBuffer","toString","isArray","val","isObject","isFunction","forEach","obj","fn","length","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","undefined","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","RegExp","source","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","join","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","root","Function","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","binding","e","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","apply","func","args","arrayAggregator","array","setter","iteratee","accumulator","index","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","Array","arrayPush","values","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseUnary","baseValues","props","cacheHas","cache","has","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","string","test","mapToArray","map","size","overArg","transform","arg","replaceHolders","placeholder","setToArray","set","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","match","unicodeToArray","split","asciiToArray","unescapeHtmlChar","_","runInContext","context","uid","defaults","pick","Date","Error","Math","String","TypeError","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","now","ctxSetTimeout","setTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","max","nativeMin","min","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","this","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","add","Stack","data","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","push","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","constructor","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","pop","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","last","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","message","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","start","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","end","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","slice","copy","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","charAt","trailing","createCompounder","callback","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","flatten","otherFunc","type","getValue","stubArray","hasPath","hasFunc","isLength","resolve","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","charCodeAt","quote","subString","clone","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","toArray","next","done","iteratorToArray","remainder","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","toLowerCase","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","toUpperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","method","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","after","castArray","chunk","compact","concat","cond","conforms","baseConforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","filter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","remove","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","update","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","target","position","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","uniqueId","prefix","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","define","amd","len","escapeExpression","toHTML","possible","badChars","escapeChar","createFrame","frame","_parent","blockParams","params","ids","appendContextPath","contextPath","client","default","headers","requesttoken","OC","requestToken","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","_toString","isValidArrayIndex","isPromise","then","catch","JSON","stringify","makeMap","expectsLowerCase","list","isBuiltInTag","isReservedAttribute","arr","item","hasOwn","cached","camelizeRE","camelize","hyphenateRE","hyphenate","ctx","boundFn","_length","ret","to","_from","toObject","res","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","writable","configurable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","userAgent","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","_Set","hasSymbol","Reflect","ownKeys","warn","Dep","subs","addSub","sub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","VNode","children","text","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayMethods","original","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","src","__proto__","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","getOwnPropertyDescriptor","childOb","dependArray","newVal","del","items","strats","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","hooks","dedupeHooks","mergeAssets","hook","key$1","methods","inject","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","console","error","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","event","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","hash","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","isTextNode","shift","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","createElement","cloneAndMarkFunctionalResult","renderContext","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","factory","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reason","component","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","style","class","registerDeepBindings","_createElement","comp","base","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","j","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","createEvent","timeStamp","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","segments","parsePath","cleanupDeps","tmp","queueWatcher","oldValue","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","use","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","selected","querySelector","nodeOps","tagName","multiple","setAttribute","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","parseFilters","exp","prev","filters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","msg","pluckModuleFunction","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","events","right","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","valueExpression","assignment","genAssignmentCode","eof","isStringStart","parseString","parseBracket","parseModel","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","initEvent","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","left","dy","top","moved","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","body","offsetHeight","propertyName","_hasMove","cloneNode","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","open","close","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","html","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","warn$2","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","rawAttrsMap","parse","isPreTag","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","element","trimEndingWhitespace","processed","processElement","if","elseif","else","addIfCondition","block","forbidden","findPrevElement","slotScope","slotTarget","lastNode","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","all","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","unarySlash","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","parseHTML","comments","outputSourceRange","start$1","ieNSBug","ieNSPrefix","guardIESVGBug","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","tagRE","tokenValue","tokens","rawTokens","parseText","processKey","for","checkInFor","processRef","slotTargetDynamic","getRawBindingAttr","slotBinding","getSlotName","slotBinding$1","ref$1","dynamic$1","slotContainer","processSlotContent","slotName","processComponent","syncGen","isDynamic","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","alias","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","code","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","static","isDirectChildOfTemplateFor","l$1","markStaticRoots","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","esc","tab","space","up","down","keyNames","genGuard","modifierCode","stop","prevent","ctrl","alt","meta","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","keyCode","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","state","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","bind$$1","genSlot","componentName","genData$2","genComponent","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","needRuntime","hasRuntime","gen","genDirectives","containsSlotChild","needsKey","generatedSlots","genScopedSlot","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","staticProps","dynamicProps","createFunction","errors","createCompileToFunctionFn","compile","compiled","fnGenErrors","baseCompile","div","finalOptions","tips","tip","compileToFunctions","getShouldDecode","href","idToTemplate","mount","documentElement","outerHTML","container","getOuterHTML","g","errorProps","Exception","loc","line","column","idx","captureStackTrace","lineNumber","nop","content","locals","utils","encode","encodeURIComponent","url","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","title","browser","argv","versions","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","request","auth","username","password","Authorization","btoa","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","send","enhanceError","config1","config2","Cancel","_interopRequireDefault","HandlebarsEnvironment","_utils","_exception2","_helpers","_decorators","_logger2","COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","5","6","7","helpers","decorators","registerDefaultHelpers","registerDefaultDecorators","logger","log","registerHelper","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","Axios","mergeConfig","createInstance","defaultConfig","instance","axios","instanceConfig","CancelToken","isCancel","promises","InterceptorManager","dispatchRequest","interceptors","fulfilled","rejected","getUri","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","isAxiosError","description","fileName","columnNumber","ignoreDuplicateOf","parsed","substr","originURL","msie","urlParsingNode","resolveURL","protocol","host","hostname","port","pathname","location","requestURL","write","expires","domain","secure","cookie","toGMTString","decodeURIComponent","relativeURL","executor","resolvePromise","token","webpackPolyfill","deprecate","Handlebars","depth0","helper","alias1","nullContext","alias2","helperMissing","alias4","link","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","SafeString","VM","spec","inst","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","inverse","_exception","execIteration","field","priorKey","conditional","includeZero","level","_decoratorsInline2","_decoratorsInline","methodMap","lookupLevel","levelMap","_len","_key","checkRevision","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","templateSpec","main","decorator","main_d","compiler","strict","lookup","depths","lambda","invokePartial","resolvePartial","compilerOptions","indent","lines","programs","program","declaredBlockParams","programWrapper","wrapProgram","param","seal","_setup","useData","useBlockParams","useDepths","executeDecorators","isTop","usePartial","useDecorators","_child","currentPartialBlock","partialBlock","prog","currentDepths","$Handlebars","useSourceMap","cssMapping","sourceMapping","sourceMap","base64","sourceURLs","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","script","attachEvent","task","normalizeComponent","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","beforeCreate","_h","primary","onClickActionButton","label","avatarsEnabled","fileTemplate","userLocalTemplate","userRemoteTemplate","unknownTemplate","unknownLinkTemplate","parseMessage","parameters","escapeHTML","parameter","parseParameter","parseFileParameter","server","lastSlashPosition","firstSlashPosition","_vm","notificationId","timestamp","absoluteDate","relativeDate","onDismissNotification","icon","renderedSubject","onClickMessage","collapsed","isCollapsedMessage","renderedMessage","shutdown","hasNotifications","notifications","iconPath","notification_id","object_id","object_type","onRemove","onDismissAll","OCA","searchBox","getElementsByClassName","notificationsBell","nodeName","insertAdjacentHTML","App","listToStyles","parentId","newStyles","part","media","hasDocument","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","textStore","replaceText","replacement","styleSheet","cssNode","ssrId"],"mappings":"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","file":"notifications.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 62);\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;',\n '=': '&#x3D;'\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQ3ZCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRTdCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFtQjtBQUMzQyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQUlNLFVBQVUsR0FKaEIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7R0FDcEYsQ0FBQztDQUNIO1FBQ08sVUFBVSxHQUFWLFVBQVU7Ozs7O0FBSVgsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFTLEtBQUssRUFBRTtBQUN0RCxTQUFPLEFBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUFHLEtBQUssQ0FBQztDQUNqRyxDQUFDOzs7OztBQUdLLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUdNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUFFLFdBQU8sTUFBTSxDQUFDO0dBQUU7QUFDOUMsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYD1dLztcblxuZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHtcbiAgcmV0dXJuIGVzY2FwZVtjaHJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iai8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgfTtcbn1cbmV4cG9ydCB7aXNGdW5jdGlvbn07XG4vKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpID8gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XScgOiBmYWxzZTtcbn07XG5cbi8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGFycmF5W2ldID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgeyByZXR1cm4gc3RyaW5nOyB9XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkge1xuICBsZXQgZnJhbWUgPSBleHRlbmQoe30sIG9iamVjdCk7XG4gIGZyYW1lLl9wYXJlbnQgPSBvYmplY3Q7XG4gIHJldHVybiBmcmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7XG4gIHBhcmFtcy5wYXRoID0gaWRzO1xuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgsIGlkKSB7XG4gIHJldHVybiAoY29udGV4dFBhdGggPyBjb250ZXh0UGF0aCArICcuJyA6ICcnKSArIGlkO1xufVxuIl19\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar axios_1 = require(\"axios\");\nvar client = axios_1.default.create({\n headers: {\n requesttoken: OC.requestToken\n }\n});\nexports.default = client;\n","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&amp;': '&',\n '&#10;': '\\n',\n '&#9;': '\\t',\n '&#39;': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (process.env.NODE_ENV !== 'production') {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*(?:[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf('&#10;') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: process.env.NODE_ENV !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nexport default Vue;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","'use strict';\n\nexports.__esModule = true;\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n column = undefined;\n if (loc) {\n line = loc.start.line;\n column = loc.start.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n } else {\n this.column = column;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkcsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDdEIsSUFBSSxZQUFBO01BQ0osTUFBTSxZQUFBLENBQUM7QUFDWCxNQUFJLEdBQUcsRUFBRTtBQUNQLFFBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7O0FBRTFCLFdBQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7R0FDeEM7O0FBRUQsTUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7O0FBRzFELE9BQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2hELFFBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDOUM7OztBQUdELE1BQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFNBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSTtBQUNGLFFBQUksR0FBRyxFQUFFO0FBQ1AsVUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7QUFJdkIsVUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO0FBQ3pCLGNBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwQyxlQUFLLEVBQUUsTUFBTTtBQUNiLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7T0FDdEI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgICAgbGluZSxcbiAgICAgIGNvbHVtbjtcbiAgaWYgKGxvYykge1xuICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcblxuICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKG5vcCkge1xuICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi9cbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV4Y2VwdGlvbjtcbiJdfQ==\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"997ce7ec\", content, true, {});","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar VERSION = '4.1.2';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 7;\n\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQTRDLFNBQVM7O3lCQUMvQixhQUFhOzs7O3VCQUNFLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNuQyxVQUFVOzs7O0FBRXRCLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFDeEIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxVQUFVO0NBQ2QsQ0FBQzs7O0FBRUYsSUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsTUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixNQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLGtDQUF1QixJQUFJLENBQUMsQ0FBQztBQUM3Qix3Q0FBMEIsSUFBSSxDQUFDLENBQUM7Q0FDakM7O0FBRUQscUJBQXFCLENBQUMsU0FBUyxHQUFHO0FBQ2hDLGFBQVcsRUFBRSxxQkFBcUI7O0FBRWxDLFFBQU0scUJBQVE7QUFDZCxLQUFHLEVBQUUsb0JBQU8sR0FBRzs7QUFFZixnQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDakMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQUUsY0FBTSwyQkFBYyx5Q0FBeUMsQ0FBQyxDQUFDO09BQUU7QUFDM0Usb0JBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsVUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDekI7R0FDRjtBQUNELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDM0I7O0FBRUQsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFFBQUksZ0JBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxvQkFBTyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCLE1BQU07QUFDTCxVQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNsQyxjQUFNLHlFQUEwRCxJQUFJLG9CQUFpQixDQUFDO09BQ3ZGO0FBQ0QsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDL0I7R0FDRjtBQUNELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDNUI7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFBRSxjQUFNLDJCQUFjLDRDQUE0QyxDQUFDLENBQUM7T0FBRTtBQUM5RSxvQkFBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM1QjtHQUNGO0FBQ0QscUJBQW1CLEVBQUUsNkJBQVMsSUFBSSxFQUFFO0FBQ2xDLFdBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM5QjtDQUNGLENBQUM7O0FBRUssSUFBSSxHQUFHLEdBQUcsb0JBQU8sR0FBRyxDQUFDOzs7UUFFcEIsV0FBVztRQUFFLE1BQU0iLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlRnJhbWUsIGV4dGVuZCwgdG9TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdEhlbHBlcnN9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnN9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4xLjInO1xuZXhwb3J0IGNvbnN0IENPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAnXG59O1xuXG5jb25zdCBvYmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMsIGRlY29yYXRvcnMpIHtcbiAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTtcbiAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9O1xuICB0aGlzLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzIHx8IHt9O1xuXG4gIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7XG4gIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyk7XG59XG5cbkhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsXG5cbiAgbG9nZ2VyOiBsb2dnZXIsXG4gIGxvZzogbG9nZ2VyLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5oZWxwZXJzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUsIHBhcnRpYWwpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oYEF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCBcIiR7bmFtZX1cIiBhcyB1bmRlZmluZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfVxufTtcblxuZXhwb3J0IGxldCBsb2cgPSBsb2dnZXIubG9nO1xuXG5leHBvcnQge2NyZWF0ZUZyYW1lLCBsb2dnZXJ9O1xuIl19\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<a class=\\\"filename has-tooltip\\\" href=\\\"\"\n + alias4(((helper = (helper = helpers.link || (depth0 != null ? depth0.link : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"link\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" title=\\\"\"\n + alias4(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a>\\n\";\n},\"useData\":true});","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7eUNBQXVDLGdDQUFnQzs7OzsyQkFDOUMsZ0JBQWdCOzs7O29DQUNQLDBCQUEwQjs7Ozt5QkFDckMsY0FBYzs7OzswQkFDYixlQUFlOzs7OzZCQUNaLGtCQUFrQjs7OzsyQkFDcEIsZ0JBQWdCOzs7O0FBRWxDLFNBQVMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0FBQy9DLHlDQUEyQixRQUFRLENBQUMsQ0FBQztBQUNyQywyQkFBYSxRQUFRLENBQUMsQ0FBQztBQUN2QixvQ0FBc0IsUUFBUSxDQUFDLENBQUM7QUFDaEMseUJBQVcsUUFBUSxDQUFDLENBQUM7QUFDckIsMEJBQVksUUFBUSxDQUFDLENBQUM7QUFDdEIsNkJBQWUsUUFBUSxDQUFDLENBQUM7QUFDekIsMkJBQWEsUUFBUSxDQUFDLENBQUM7Q0FDeEIiLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBlcnMvZWFjaCc7XG5pbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnO1xuaW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnO1xuaW1wb3J0IHJlZ2lzdGVyTG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnO1xuaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9tICcuL2hlbHBlcnMvd2l0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7XG4gIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpO1xuICByZWdpc3RlcldpdGgoaW5zdGFuY2UpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBc0QsVUFBVTs7cUJBRWpELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLGVBQU8sR0FBRyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztPQUN4Qjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGNyZWF0ZUZyYW1lLCBpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgbGV0IGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHtkYXRhOiBkYXRhfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else {\n var priorKey = undefined;\n\n for (var key in context) {\n if (context.hasOwnProperty(key)) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n }\n }\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQUErRSxVQUFVOzt5QkFDbkUsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixZQUFNLDJCQUFjLDZCQUE2QixDQUFDLENBQUM7S0FDcEQ7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDekIsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRTtRQUNSLElBQUksWUFBQTtRQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixRQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixpQkFBVyxHQUFHLHlCQUFrQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ2pGOztBQUVELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDaEIsVUFBSSxHQUFHLG1CQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQzs7QUFFRCxhQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtBQUN6QyxVQUFJLElBQUksRUFBRTtBQUNSLFlBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ2pCLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUN6QixZQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7O0FBRW5CLFlBQUksV0FBVyxFQUFFO0FBQ2YsY0FBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQ3hDO09BQ0Y7O0FBRUQsU0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFlBQUksRUFBRSxJQUFJO0FBQ1YsbUJBQVcsRUFBRSxtQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDL0UsQ0FBQyxDQUFDO0tBQ0o7O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNO0FBQ0wsWUFBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixhQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtBQUN2QixjQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0IsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0w7U0FDRjtBQUNELFlBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix1QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNBcnJheSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29udGV4dFBhdGg7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nO1xuICAgIH1cblxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH1cblxuICAgIGlmIChvcHRpb25zLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3RcbiAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmlvcktleSA9IGtleTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFBYyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDdkY7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgaGVscGVyOiBcIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBa0MsVUFBVTs7cUJBRTdCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLGtCQUFXLFdBQVcsQ0FBQyxFQUFFO0FBQUUsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0FBS3RFLFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFdBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztHQUN2SCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJpZi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbihjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChpc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeyBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7IH1cblxuICAgIC8vIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS5cbiAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZVxuICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuXG4gICAgaWYgKCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCkgfHwgaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwge2ZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4sIGhhc2g6IG9wdGlvbnMuaGFzaH0pO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVMsSUFBSSxDQUFDLENBQUM7R0FDeEIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIGxldCBsZXZlbCA9IDE7XG4gICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7XG4gICAgfVxuICAgIGFyZ3NbMF0gPSBsZXZlbDtcblxuICAgIGluc3RhbmNlLmxvZyguLi4gYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field) {\n if (!obj) {\n return obj;\n }\n if (field === 'constructor' && !obj.propertyIsEnumerable(field)) {\n return undefined;\n }\n return obj[field];\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JELFFBQUksQ0FBQyxHQUFHLEVBQUU7QUFDUixhQUFPLEdBQUcsQ0FBQztLQUNaO0FBQ0QsUUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQy9ELGFBQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0QsV0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7R0FDbkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9va3VwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uKG9iaiwgZmllbGQpIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAnY29uc3RydWN0b3InICYmICFvYmoucHJvcGVydHlJc0VudW1lcmFibGUoZmllbGQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gb2JqW2ZpZWxkXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUErRSxVQUFVOztxQkFFMUUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLENBQUMsZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNyQixVQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFVBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQy9CLFlBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2hGOztBQUVELGFBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtBQUNqQixZQUFJLEVBQUUsSUFBSTtBQUNWLG1CQUFXLEVBQUUsbUJBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7T0FDaEUsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QjtHQUNGLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FwcGVuZENvbnRleHRQYXRoLCBibG9ja1BhcmFtcywgY3JlYXRlRnJhbWUsIGlzRW1wdHksIGlzRnVuY3Rpb259IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghaXNFbXB0eShjb250ZXh0KSkge1xuICAgICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXFCLFVBQVU7O3FCQUVoQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXh0ZW5kfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVyRGVjb3JhdG9yKCdpbmxpbmUnLCBmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykge1xuICAgIGxldCByZXQgPSBmbjtcbiAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7XG4gICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9O1xuICAgICAgcmV0ID0gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy5cbiAgICAgICAgbGV0IG9yaWdpbmFsID0gY29udGFpbmVyLnBhcnRpYWxzO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBleHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7XG4gICAgICAgIGxldCByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3JpZ2luYWw7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n if (!console[method]) {\n // eslint-disable-line no-console\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFzQixTQUFTOztBQUUvQixJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFDL0UsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxVQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFOztBQUNwQixjQUFNLEdBQUcsS0FBSyxDQUFDO09BQ2hCOzt3Q0FQbUIsT0FBTztBQUFQLGVBQU87OztBQVEzQixhQUFPLENBQUMsTUFBTSxPQUFDLENBQWYsT0FBTyxFQUFZLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO0dBQ0Y7Q0FDRixDQUFDOztxQkFFYSxNQUFNIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5kZXhPZn0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name) {\n if (!(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj);\n }\n return obj[name];\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n if (depths[i] && depths[i][name] != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n merge: function merge(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n container.helpers = container.merge(options.helpers, env.helpers);\n\n if (templateSpec.usePartial) {\n container.partials = container.merge(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = container.merge(options.decorators, env.decorators);\n }\n } else {\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBQzhCLFFBQVE7O0FBRWxFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztNQUN2RCxlQUFlLDBCQUFvQixDQUFDOztBQUUxQyxNQUFJLGdCQUFnQixLQUFLLGVBQWUsRUFBRTtBQUN4QyxRQUFJLGdCQUFnQixHQUFHLGVBQWUsRUFBRTtBQUN0QyxVQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1VBQ25ELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVELFlBQU0sMkJBQWMseUZBQXlGLEdBQ3ZHLHFEQUFxRCxHQUFHLGVBQWUsR0FBRyxtREFBbUQsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNoSyxNQUFNOztBQUVMLFlBQU0sMkJBQWMsd0ZBQXdGLEdBQ3RHLGlEQUFpRCxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNuRjtHQUNGO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcs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QUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUYsU0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDM0I7QUFDRCxTQUFPLElBQUksQ0FBQztDQUNiIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgQ09NUElMRVJfUkVWSVNJT04sIFJFVklTSU9OX0NIQU5HRVMsIGNyZWF0ZUZyYW1lIH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsXG4gICAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChjb21waWxlclJldmlzaW9uICE9PSBjdXJyZW50UmV2aXNpb24pIHtcbiAgICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikge1xuICAgICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgcnVudGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlvdXIgcnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcpLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIWVudikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpO1xuICB9XG4gIGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWMubWFpbl9kO1xuXG4gIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93XG4gIC8vIGZvciBleHRlcm5hbCB1c2VycyB0byBvdmVycmlkZSB0aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuXG4gIGVudi5WTS5jaGVja1JldmlzaW9uKHRlbXBsYXRlU3BlYy5jb21waWxlcik7XG5cbiAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7XG4gICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkge1xuICAgICAgb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBpbGUocGFydGlhbCwgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucywgZW52KTtcbiAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXShjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSkge1xuICAgICAgaWYgKCEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaik7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqW25hbWVdO1xuICAgIH0sXG4gICAgbG9va3VwOiBmdW5jdGlvbihkZXB0aHMsIG5hbWUpIHtcbiAgICAgIGNvbnN0IGxlbiA9IGRlcHRocy5sZW5ndGg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChkZXB0aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgICAgZm4gPSB0aGlzLmZuKGkpO1xuICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2U6IGZ1bmN0aW9uKHBhcmFtLCBjb21tb24pIHtcbiAgICAgIGxldCBvYmogPSBwYXJhbSB8fCBjb21tb247XG5cbiAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgKHBhcmFtICE9PSBjb21tb24pKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFpbihjb250ZXh0LyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICB9XG4gICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0LmlzVG9wID0gdHJ1ZTtcblxuICByZXQuX3NldHVwID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTtcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7XG4gICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9ycywgZW52LmRlY29yYXRvcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1swXSAmJiAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihjb250YWluZXIsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2NrUGFyYW1zKSxcbiAgICAgICAgY3VycmVudERlcHRocyk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuXG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7IHJldHVybiAnJzsgfVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKHByb2csIHByb3BzLCBjb250YWluZXIsIGRlcHRocyAmJiBkZXB0aHNbMF0sIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG4iXX0=\n","/* global window */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOztBQUVsQyxNQUFJLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU07TUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRWxDLFlBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBVztBQUNqQyxRQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ2xDLFVBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQy9CO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LFxuICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<span class=\\\"avatar-name-wrapper\\\" data-user=\\\"\"\n + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"><div class=\\\"avatar\\\" data-user=\\\"\"\n + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" data-user-display-name=\\\"\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"></div><strong>\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</strong></span>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"<strong>\"\n + container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</strong>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"<strong>\"\n + container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</strong>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<a href=\\\"\"\n + alias4(((helper = (helper = helpers.link || (depth0 != null ? depth0.link : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"link\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</a>\\n\";\n},\"useData\":true});","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\"","exports = module.exports = require(\"../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.fade-enter-active[data-v-5caaaa26],\\n.fade-leave-active[data-v-5caaaa26],\\n.fade-collapse-enter-active[data-v-5caaaa26],\\n.fade-collapse-leave-active[data-v-5caaaa26] {\\n\\ttransition: opacity var(--animation-quick), max-height var(--animation-quick);\\n}\\n.fade-collapse-enter[data-v-5caaaa26],\\n.fade-collapse-leave-to[data-v-5caaaa26] {\\n\\topacity: 0;\\n\\tmax-height: 0;\\n}\\n.fade-enter[data-v-5caaaa26],\\n.fade-leave-to[data-v-5caaaa26] {\\n\\topacity: 0;\\n}\\n\", \"\"]);\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = modules[_i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./Action.vue?vue&type=template&id=2fa88a3d&\"\nimport script from \"./Action.vue?vue&type=script&lang=js&\"\nexport * from \"./Action.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n\t<button class=\"action-button pull-right\" :class=\"{ primary: primary }\"\n\t\t:data-type=\"type\" :data-href=\"link\" @click=\"onClickActionButton\">\n\t\t{{ label }}\n\t</button>\n</template>\n\n<script>\nimport axios from 'nextcloud-axios'\nexport default {\n\tname: 'Action',\n\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tlink: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonClickActionButton: function() {\n\t\t\tconst type = this.type || 'GET'\n\t\t\tif (type === 'WEB') {\n\t\t\t\tOC.redirect(this.link)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\taxios({\n\t\t\t\tmethod: type,\n\t\t\t\turl: this.link\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.$parent._$el.fadeOut(OC.menuSpeed)\n\t\t\t\t\tthis.$parent.$emit('remove')\n\t\t\t\t\t$('body').trigger(new $.Event('OCA.Notification.Action', {\n\t\t\t\t\t\tnotification: this.$parent,\n\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\turl: this.link,\n\t\t\t\t\t\t\ttype: type\n\t\t\t\t\t\t}\n\t\t\t\t\t}))\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tOC.Notification.showTemporary(t('notifications', 'Failed to perform action'))\n\t\t\t\t})\n\t\t}\n\t}\n}\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"action-button pull-right\",class:{ primary: _vm.primary },attrs:{\"data-type\":_vm.type,\"data-href\":_vm.link},on:{\"click\":_vm.onClickActionButton}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.label)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * This file is licensed under the Affero General Public License version 3 or\n * later. See the COPYING file.\n */\n\n/* global t, escapeHTML */\n\nimport _ from 'lodash'\n\nexport default {\n\tavatarsEnabled: true,\n\n\tfileTemplate: require('./templates/file.handlebars'),\n\n\tuserLocalTemplate: require('./templates/userLocal.handlebars'),\n\tuserRemoteTemplate: require('./templates/userRemote.handlebars'),\n\n\tunknownTemplate: require('./templates/unkown.handlebars'),\n\tunknownLinkTemplate: require('./templates/unkownLink.handlebars'),\n\n\t/**\n\t * @param {string} message The rich object message with placeholders\n\t * @param {Object} parameters The rich objects to be parsed into the message\n\t * @returns {string} The HTML to render this message\n\t */\n\tparseMessage: function(message, parameters) {\n\t\tmessage = escapeHTML(message)\n\t\tvar self = this\n\t\tvar regex = /\\{([a-z\\-_0-9]+)\\}/gi\n\t\tvar matches = message.match(regex)\n\n\t\t_.each(matches, function(parameter) {\n\t\t\tparameter = parameter.substring(1, parameter.length - 1)\n\t\t\tif (!parameters.hasOwnProperty(parameter) || !parameters[parameter]) {\n\t\t\t\t// Malformed translation?\n\t\t\t\tconsole.error('Potential malformed ROS string: parameter {' + parameter + '} was found in the string but is missing from the parameter list')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar parsed = self.parseParameter(parameters[parameter])\n\t\t\tmessage = message.replace('{' + parameter + '}', parsed)\n\t\t})\n\n\t\treturn message.replace(new RegExp('\\n', 'g'), '<br>')\n\t},\n\n\t/**\n\t * @param {Object} parameter Rich Object\n\t * @param {string} parameter.type Type of the object\n\t * @param {string} parameter.id Identifier of the object\n\t * @param {string} parameter.name Name of the object\n\t * @param {string} parameter.link Absolute link to the object\n\t * @param {string} [parameter.server] Server the user is on\n\t * @param {string} [parameter.path] User visible path of the file\n\t * @returns {string} The HTML to render this object\n\t */\n\tparseParameter: function(parameter) {\n\t\tswitch (parameter.type) {\n\t\tcase 'file':\n\t\t\treturn this.parseFileParameter(parameter).trim('\\n')\n\n\t\tcase 'user':\n\t\t\tif (_.isUndefined(parameter.server)) {\n\t\t\t\treturn this.userLocalTemplate(parameter).trim('\\n')\n\t\t\t}\n\n\t\t\treturn this.userRemoteTemplate(parameter).trim('\\n')\n\n\t\tdefault:\n\t\t\tif (!_.isUndefined(parameter.link)) {\n\t\t\t\treturn this.unknownLinkTemplate(parameter).trim('\\n')\n\t\t\t}\n\n\t\t\treturn this.unknownTemplate(parameter).trim('\\n')\n\t\t}\n\t},\n\n\t/**\n\t * @param {Object} parameter Rich Object file\n\t * @param {string} parameter.id Numeric ID of the file\n\t * @param {string} parameter.name Name of the file/folder\n\t * @param {string} parameter.path User visible path of the file\n\t * @param {string} parameter.link Absolute link to the file\n\t * @returns {string} The HTML to render this parameter\n\t */\n\tparseFileParameter: function(parameter) {\n\t\tvar lastSlashPosition = parameter.path.lastIndexOf('/')\n\t\tvar firstSlashPosition = parameter.path.indexOf('/')\n\t\tparameter.path = parameter.path.substring(firstSlashPosition === 0 ? 1 : 0, lastSlashPosition)\n\n\t\treturn this.fileTemplate(_.extend(parameter, {\n\t\t\ttitle: parameter.path.length === 0 ? '' : t('notifications', 'in {path}', parameter)\n\t\t}))\n\t}\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<template>\n\t<div v-if=\"!shutdown\" class=\"notifications\">\n\t\t<div ref=\"button\" class=\"notifications-button menutoggle\" :class=\"{ hasNotifications: notifications.length }\"\n\t\t\ttabindex=\"0\" role=\"button\"\n\t\t\taria-label=\"t('notifications', 'Notifications')\"\n\t\t\taria-haspopup=\"true\" aria-controls=\"notification-container\" aria-expanded=\"false\">\n\t\t\t<img ref=\"icon\" class=\"svg\" alt=\"\"\n\t\t\t\t:title=\"t('notifications', 'Notifications')\" :src=\"iconPath\">\n\t\t</div>\n\t\t<div ref=\"container\" class=\"notification-container\">\n\t\t\t<transition name=\"fade\">\n\t\t\t\t<ul v-if=\"notifications.length > 0\" class=\"notification-wrapper\">\n\t\t\t\t\t<transition-group name=\"fade-collapse\" tag=\"li\">\n\t\t\t\t\t\t<notification\n\t\t\t\t\t\t\tv-for=\"(n, index) in notifications\"\n\t\t\t\t\t\t\t:key=\"n.notification_id\"\n\t\t\t\t\t\t\tv-bind=\"n\"\n\t\t\t\t\t\t\t:index=\"index\"\n\t\t\t\t\t\t\t:notification-id=\"n.notification_id\"\n\t\t\t\t\t\t\t:object-id=\"n.object_id\"\n\t\t\t\t\t\t\t:object-type=\"n.object_type\"\n\t\t\t\t\t\t\t@remove=\"onRemove\" />\n\t\t\t\t\t</transition-group>\n\t\t\t\t\t<li v-if=\"notifications.length > 2\">\n\t\t\t\t\t\t<div class=\"dismiss-all\" @click=\"onDismissAll\">\n\t\t\t\t\t\t\t<span class=\"icon icon-close svg\" :title=\"t('notifications', 'Dismiss all notifications')\" /> {{ t('notifications', 'Dismiss all notifications') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t\t<div v-else class=\"emptycontent\">\n\t\t\t\t\t<div class=\"icon icon-notifications-dark\" />\n\t\t\t\t\t<h2>{{ t('notifications', 'No notifications') }}</h2>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Notification from './components/Notification'\nimport axios from 'nextcloud-axios'\nimport _ from 'lodash'\n\nexport default {\n\tname: 'NotificationsList',\n\n\tcomponents: {\n\t\tNotification\n\t},\n\n\tdata: function() {\n\t\treturn {\n\t\t\thadNotifications: false,\n\t\t\tbackgroundFetching: false,\n\t\t\tshutdown: false,\n\t\t\tnotifications: [],\n\n\t\t\t/** @type {number} */\n\t\t\tpollInterval: 30000, // milliseconds\n\n\t\t\t/** @type {number|null} */\n\t\t\tinterval: null\n\t\t}\n\t},\n\n\t_$icon: null,\n\n\tcomputed: {\n\t\ticonPath: function() {\n\t\t\tvar iconPath = 'notifications'\n\n\t\t\tif (this.notifications.length) {\n\t\t\t\tif (this.isRedThemed()) {\n\t\t\t\t\ticonPath += '-red'\n\t\t\t\t}\n\t\t\t\ticonPath += '-new'\n\t\t\t}\n\n\t\t\tif (this.invertedTheme()) {\n\t\t\t\ticonPath += '-dark'\n\t\t\t}\n\n\t\t\treturn OC.imagePath('notifications', iconPath)\n\t\t}\n\t},\n\n\tmounted: function() {\n\t\tthis._$icon = $(this.$refs.icon)\n\n\t\t// Bind the button click event\n\t\tOC.registerMenu($(this.$refs.button), $(this.$refs.container), undefined, true)\n\n\t\t// Initial call to the notification endpoint\n\t\tthis._fetch()\n\n\t\t// Setup the background checker\n\t\tif (oc_config.session_keepalive) {\n\t\t\tthis.interval = setInterval(this._backgroundFetch.bind(this), this.pollInterval)\n\t\t}\n\t},\n\n\tupdated: function() {\n\t\tthis._$icon.attr('src', this.iconPath)\n\n\t\tif (!this.hadNotifications && this.notifications.length) {\n\t\t\tthis._$icon\n\t\t\t\t.animate({ opacity: 0.6 }, 600)\n\t\t\t\t.animate({ opacity: 1 }, 600)\n\t\t\t\t.animate({ opacity: 0.6 }, 600)\n\t\t\t\t.animate({ opacity: 1 }, 600)\n\t\t}\n\n\t\tthis.hadNotifications = this.notifications.length > 0\n\t},\n\n\tmethods: {\n\t\tonDismissAll: function() {\n\t\t\taxios\n\t\t\t\t.delete(OC.linkToOCS('apps/notifications/api/v2', 2) + 'notifications')\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.notifications = []\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tOC.Notification.showTemporary(t('notifications', 'Failed to dismiss all notifications'))\n\t\t\t\t})\n\t\t},\n\t\tonRemove: function(index) {\n\t\t\tthis.notifications.splice(index, 1)\n\t\t},\n\n\t\tinvertedTheme: function() {\n\t\t\treturn OCA.Theming && OCA.Theming.inverted\n\t\t},\n\n\t\tisRedThemed: function() {\n\t\t\tif (OCA.Theming && OCA.Theming.color) {\n\t\t\t\tvar hsl = this.rgbToHsl(OCA.Theming.color.substring(1, 3),\n\t\t\t\t\tOCA.Theming.color.substring(3, 5),\n\t\t\t\t\tOCA.Theming.color.substring(5, 7))\n\t\t\t\tvar h = hsl[0] * 360\n\t\t\t\treturn (h >= 330 || h <= 15) && hsl[1] > 0.7 && (hsl[2] > 0.1 || hsl[2] < 0.6)\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\trgbToHsl: function(r, g, b) {\n\t\t\tr = parseInt(r, 16) / 255; g = parseInt(g, 16) / 255; b = parseInt(b, 16) / 255\n\t\t\tvar max = Math.max(r, g, b); var min = Math.min(r, g, b)\n\t\t\tvar h; var s; var l = (max + min) / 2\n\n\t\t\tif (max === min) {\n\t\t\t\th = s = 0\n\t\t\t} else {\n\t\t\t\tvar d = max - min\n\t\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\t\t\t\tswitch (max) {\n\t\t\t\tcase r: h = (g - b) / d + (g < b ? 6 : 0); break\n\t\t\t\tcase g: h = (b - r) / d + 2; break\n\t\t\t\tcase b: h = (r - g) / d + 4; break\n\t\t\t\t}\n\t\t\t\th /= 6\n\t\t\t}\n\n\t\t\treturn [h, s, l]\n\t\t},\n\n\t\t/**\n\t\t\t * Performs the AJAX request to retrieve the notifications\n\t\t\t */\n\t\t_fetch: function() {\n\t\t\taxios\n\t\t\t\t.get(OC.linkToOCS('apps/notifications/api/v2', 2) + 'notifications')\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.status === 204) {\n\t\t\t\t\t\t// 204 No Content - Intercept when no notifiers are there.\n\t\t\t\t\t\tthis._shutDownNotifications()\n\t\t\t\t\t} else if (!_.isUndefined(response.data) && !_.isUndefined(response.data.ocs) && !_.isUndefined(response.data.ocs.data) && _.isArray(response.data.ocs.data)) {\n\t\t\t\t\t\tthis.notifications = response.data.ocs.data\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.info('data.ocs.data is undefined or not an array')\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tif (!err.response) {\n\t\t\t\t\t\tconsole.info('No response received, retrying')\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else if (err.response.status === 503) {\n\t\t\t\t\t\t// 503 - Maintenance mode\n\t\t\t\t\t\tconsole.info('Shutting down notifications: instance is in maintenance mode.')\n\t\t\t\t\t} else if (err.response.status === 404) {\n\t\t\t\t\t\t// 404 - App disabled\n\t\t\t\t\t\tconsole.info('Shutting down notifications: app is disabled.')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.info('Shutting down notifications: [' + err.response.status + '] ' + err.response.statusText)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._shutDownNotifications()\n\t\t\t\t})\n\t\t},\n\n\t\t_backgroundFetch: function() {\n\t\t\tthis.backgroundFetching = true\n\t\t\tthis._fetch()\n\t\t},\n\n\t\t/**\n\t\t\t * The app was disabled or has no notifiers, so we can stop polling\n\t\t\t * And hide the UI as well\n\t\t\t */\n\t\t_shutDownNotifications: function() {\n\t\t\twindow.clearInterval(this.interval)\n\t\t\tthis.shutdown = true\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n\t.fade-enter-active,\n\t.fade-leave-active,\n\t.fade-collapse-enter-active,\n\t.fade-collapse-leave-active {\n\t\ttransition: opacity var(--animation-quick), max-height var(--animation-quick);\n\t}\n\t.fade-collapse-enter,\n\t.fade-collapse-leave-to {\n\t\topacity: 0;\n\t\tmax-height: 0;\n\t}\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n</style>\n","import { render, staticRenderFns } from \"./Notification.vue?vue&type=template&id=54927f33&\"\nimport script from \"./Notification.vue?vue&type=script&lang=js&\"\nexport * from \"./Notification.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n\t<div class=\"notification\" :data-id=\"notificationId\" :data-timestamp=\"timestamp\">\n\t\t<div class=\"notification-heading\">\n\t\t\t<span class=\"notification-time has-tooltip live-relative-timestamp\" :data-timestamp=\"timestamp\" :title=\"absoluteDate\">{{ relativeDate }}</span>\n\t\t\t<div class=\"notification-delete\" @click=\"onDismissNotification\">\n\t\t\t\t<span class=\"icon icon-close svg\" :title=\"t('notifications', 'Dismiss')\" />\n\t\t\t</div>\n\t\t</div>\n\t\t<a v-if=\"useLink\" :href=\"link\" class=\"notification-subject full-subject-link\">\n\t\t\t<span v-if=\"icon\" class=\"image\"><img :src=\"icon\" class=\"notification-icon\"></span>\n\t\t\t<span class=\"text\" v-html=\"renderedSubject\" />\n\t\t</a>\n\t\t<div v-else class=\"notification-subject\">\n\t\t\t<span v-if=\"icon\" class=\"image\"><img :src=\"icon\" class=\"notification-icon\"></span>\n\t\t\t<span class=\"text\" v-html=\"renderedSubject\" />\n\t\t</div>\n\t\t<div v-if=\"message\" class=\"notification-message\" @click=\"onClickMessage\">\n\t\t\t<div class=\"message-container\" :class=\"{ collapsed: isCollapsedMessage }\" v-html=\"renderedMessage\" />\n\t\t\t<div v-if=\"isCollapsedMessage\" class=\"notification-overflow\" />\n\t\t</div>\n\t\t<div v-if=\"actions.length\" class=\"notification-actions\">\n\t\t\t<action v-for=\"(a, i) in actions\" :key=\"i\" v-bind=\"a\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from 'nextcloud-axios'\nimport Action from './Action'\nimport parser from '../richObjectStringParser'\n\nexport default {\n\tname: 'Notification',\n\n\tcomponents: {\n\t\tAction\n\t},\n\n\tprops: {\n\t\tnotificationId: {\n\t\t\ttype: Number,\n\t\t\tdefault: -1,\n\t\t\trequired: true\n\t\t},\n\t\tdatetime: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tapp: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tlink: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tuser: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tmessageRich: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tmessageRichParameters: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault() {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t\trequired: true\n\t\t},\n\t\tsubject: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tsubjectRich: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tsubjectRichParameters: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault() {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t\trequired: true\n\t\t},\n\t\tobjectType: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tobjectId: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true\n\t\t},\n\t\tactions: {\n\t\t\ttype: Array,\n\t\t\tdefault() {\n\t\t\t\treturn []\n\t\t\t},\n\t\t\trequired: true\n\t\t},\n\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: -1,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowFullMessage: {\n\t\t\t\ttype: Boolean,\n\t\t\t\tdefault: false\n\t\t\t}\n\t\t}\n\t},\n\n\t_$el: null,\n\n\tcomputed: {\n\t\ttimestamp: function() {\n\t\t\treturn moment(this.datetime).format('X') * 1000\n\t\t},\n\t\tabsoluteDate: function() {\n\t\t\treturn OC.Util.formatDate(this.timestamp)\n\t\t},\n\t\trelativeDate: function() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.timestamp)\n\t\t},\n\t\tuseLink: function() {\n\t\t\treturn this.link && this.renderedSubject.indexOf('<a ') === -1\n\t\t},\n\t\trenderedSubject: function() {\n\t\t\tif (this.subjectRich.length !== 0) {\n\t\t\t\treturn parser.parseMessage(\n\t\t\t\t\tthis.subjectRich.replace(new RegExp('\\n', 'g'), ' '),\n\t\t\t\t\tthis.subjectRichParameters\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn escapeHTML(this.subject).replace(new RegExp('\\n', 'g'), ' ')\n\t\t},\n\t\tisCollapsedMessage: function() {\n\t\t\treturn this.message.length > 200 && !this.showFullMessage\n\t\t},\n\t\trenderedMessage: function() {\n\t\t\tif (this.messageRich.length !== 0) {\n\t\t\t\treturn parser.parseMessage(\n\t\t\t\t\tthis.messageRich,\n\t\t\t\t\tthis.messageRichParameters\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn escapeHTML(this.message).replace(new RegExp('\\n', 'g'), '<br>')\n\t\t}\n\t},\n\n\tmounted: function() {\n\t\tthis._$el = $(this.$el)\n\n\t\tthis._$el.find('.avatar').each(function() {\n\t\t\tvar element = $(this)\n\t\t\tif (element.data('user-display-name')) {\n\t\t\t\telement.avatar(element.data('user'), 21, undefined, false, undefined, element.data('user-display-name'))\n\t\t\t} else {\n\t\t\t\telement.avatar(element.data('user'), 21)\n\t\t\t}\n\t\t})\n\n\t\tthis._$el.find('.avatar-name-wrapper').each(function() {\n\t\t\tvar element = $(this)\n\t\t\tvar avatar = element.find('.avatar')\n\t\t\tvar label = element.find('strong')\n\n\t\t\t$.merge(avatar, label).contactsMenu(element.data('user'), 0, element)\n\t\t})\n\n\t\tthis._$el.find('.has-tooltip').tooltip({\n\t\t\t// container: this.$container.find('.notification-wrapper'),\n\t\t\tplacement: 'bottom'\n\t\t})\n\n\t\t// Parents: TransitionGroup > NotificationsList\n\t\tif (this.$parent.$parent.backgroundFetching) {\n\t\t\tthis._triggerWebNotification()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonClickMessage: function(e) {\n\t\t\tif (e.target.classList.contains('message-container')) {\n\t\t\t\tthis.showFullMessage = !this.showFullMessage\n\t\t\t}\n\t\t},\n\n\t\tonDismissNotification: function() {\n\t\t\taxios\n\t\t\t\t.delete(OC.linkToOCS('apps/notifications/api/v2', 2) + 'notifications/' + this.notificationId)\n\t\t\t\t.then(() => {\n\t\t\t\t\t// this._$el.fadeOut(OC.menuSpeed)\n\t\t\t\t\tthis.$emit('remove', this.index)\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tOC.Notification.showTemporary(t('notifications', 'Failed to dismiss notification'))\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t\t * Check if we do web notifications\n\t\t\t */\n\t\t_triggerWebNotification: function() {\n\t\t\t// Trigger browsers web notification\n\t\t\tif ('Notification' in window) {\n\t\t\t\tif (Notification.permission === 'granted') {\n\t\t\t\t\t// If it's okay let's create a notification\n\t\t\t\t\tthis._createWebNotification()\n\n\t\t\t\t// Otherwise, we need to ask the user for permission\n\t\t\t\t} else if (Notification.permission !== 'denied') {\n\t\t\t\t\tNotification.requestPermission(function(permission) {\n\t\t\t\t\t\t// If the user accepts, let's create a notification\n\t\t\t\t\t\tif (permission === 'granted') {\n\t\t\t\t\t\t\tthis._createWebNotification()\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind(this))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t\t * Create a browser notification\n\t\t\t * @see https://developer.mozilla.org/en/docs/Web/API/notification\n\t\t\t */\n\t\t_createWebNotification: function() {\n\t\t\tvar n = new Notification(this.subject, {\n\t\t\t\ttitle: this.subject,\n\t\t\t\tlang: OC.getLocale(),\n\t\t\t\tbody: this.message,\n\t\t\t\ticon: this.icon,\n\t\t\t\ttag: this.notificationId\n\t\t\t})\n\n\t\t\tif (this.link) {\n\t\t\t\tn.onclick = function(event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\twindow.location.href = this.link\n\t\t\t\t}.bind(this)\n\t\t\t}\n\n\t\t\tsetTimeout(n.close.bind(n), 5000)\n\t\t}\n\t}\n}\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notification\",attrs:{\"data-id\":_vm.notificationId,\"data-timestamp\":_vm.timestamp}},[_c('div',{staticClass:\"notification-heading\"},[_c('span',{staticClass:\"notification-time has-tooltip live-relative-timestamp\",attrs:{\"data-timestamp\":_vm.timestamp,\"title\":_vm.absoluteDate}},[_vm._v(_vm._s(_vm.relativeDate))]),_vm._v(\" \"),_c('div',{staticClass:\"notification-delete\",on:{\"click\":_vm.onDismissNotification}},[_c('span',{staticClass:\"icon icon-close svg\",attrs:{\"title\":_vm.t('notifications', 'Dismiss')}})])]),_vm._v(\" \"),(_vm.useLink)?_c('a',{staticClass:\"notification-subject full-subject-link\",attrs:{\"href\":_vm.link}},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon}})]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.renderedSubject)}})]):_c('div',{staticClass:\"notification-subject\"},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon}})]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"text\",domProps:{\"innerHTML\":_vm._s(_vm.renderedSubject)}})]),_vm._v(\" \"),(_vm.message)?_c('div',{staticClass:\"notification-message\",on:{\"click\":_vm.onClickMessage}},[_c('div',{staticClass:\"message-container\",class:{ collapsed: _vm.isCollapsedMessage },domProps:{\"innerHTML\":_vm._s(_vm.renderedMessage)}}),_vm._v(\" \"),(_vm.isCollapsedMessage)?_c('div',{staticClass:\"notification-overflow\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.actions.length)?_c('div',{staticClass:\"notification-actions\"},_vm._l((_vm.actions),function(a,i){return _c('action',_vm._b({key:i},'action',a,false))}),1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5caaaa26&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=5caaaa26&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5caaaa26\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.shutdown)?_c('div',{staticClass:\"notifications\"},[_c('div',{ref:\"button\",staticClass:\"notifications-button menutoggle\",class:{ hasNotifications: _vm.notifications.length },attrs:{\"tabindex\":\"0\",\"role\":\"button\",\"aria-label\":\"t('notifications', 'Notifications')\",\"aria-haspopup\":\"true\",\"aria-controls\":\"notification-container\",\"aria-expanded\":\"false\"}},[_c('img',{ref:\"icon\",staticClass:\"svg\",attrs:{\"alt\":\"\",\"title\":_vm.t('notifications', 'Notifications'),\"src\":_vm.iconPath}})]),_vm._v(\" \"),_c('div',{ref:\"container\",staticClass:\"notification-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.notifications.length > 0)?_c('ul',{staticClass:\"notification-wrapper\"},[_c('transition-group',{attrs:{\"name\":\"fade-collapse\",\"tag\":\"li\"}},_vm._l((_vm.notifications),function(n,index){return _c('notification',_vm._b({key:n.notification_id,attrs:{\"index\":index,\"notification-id\":n.notification_id,\"object-id\":n.object_id,\"object-type\":n.object_type},on:{\"remove\":_vm.onRemove}},'notification',n,false))}),1),_vm._v(\" \"),(_vm.notifications.length > 2)?_c('li',[_c('div',{staticClass:\"dismiss-all\",on:{\"click\":_vm.onDismissAll}},[_c('span',{staticClass:\"icon icon-close svg\",attrs:{\"title\":_vm.t('notifications', 'Dismiss all notifications')}}),_vm._v(\" \"+_vm._s(_vm.t('notifications', 'Dismiss all notifications'))+\"\\n\\t\\t\\t\\t\\t\")])]):_vm._e()],1):_c('div',{staticClass:\"emptycontent\"},[_c('div',{staticClass:\"icon icon-notifications-dark\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('notifications', 'No notifications')))])])])],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './App'\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\nconst searchBox = document.getElementsByClassName('searchbox')\nlet notificationsBell = document.createElement('div')\nnotificationsBell.setAttribute('id', 'notifications')\n\nArray.prototype.map.call(searchBox, (el) => {\n\tif (el.nodeName !== 'FORM') {\n\t\treturn\n\t}\n\n\tel.insertAdjacentHTML('afterend', notificationsBell.outerHTML)\n})\n\nexport default new Vue({\n\tel: '#notifications',\n\tname: 'NotificationsRoot',\n\trender: h => h(App)\n})\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n"],"sourceRoot":""} \ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index ea94aba..49c5ab1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1327,9 +1327,9 @@
}
},
"ajv-errors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz",
- "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
"dev": true
},
"ajv-keywords": {
@@ -1893,9 +1893,9 @@
"dev": true
},
"cacache": {
- "version": "12.0.2",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
- "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+ "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
"dev": true,
"requires": {
"bluebird": "^3.5.5",
@@ -2023,9 +2023,9 @@
"dev": true
},
"chokidar": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz",
- "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==",
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
"requires": {
"anymatch": "^2.0.0",
@@ -7312,9 +7312,9 @@
"dev": true
},
"serialize-javascript": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
- "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.0.tgz",
+ "integrity": "sha512-UkGlcYMtw4d9w7YfCtJFgdRTps8N4L0A48R+SmcGL57ki1+yHwJXnalk5bjgrw+ljv6SfzjzPjhohod2qllg/Q==",
"dev": true
},
"set-blocking": {
@@ -7844,9 +7844,9 @@
}
},
"terser": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.4.tgz",
- "integrity": "sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.1.tgz",
+ "integrity": "sha512-cGbc5utAcX4a9+2GGVX4DsenG6v0x3glnDi5hx8816X1McEAwPlPgRtXPJzSBsbpILxZ8MQMT0KvArLuE0HP5A==",
"dev": true,
"requires": {
"commander": "^2.20.0",
@@ -8399,9 +8399,9 @@
}
},
"webpack": {
- "version": "4.39.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.2.tgz",
- "integrity": "sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA==",
+ "version": "4.39.3",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.3.tgz",
+ "integrity": "sha512-BXSI9M211JyCVc3JxHWDpze85CvjC842EvpRsVTc/d15YJGlox7GIDd38kJgWrb3ZluyvIjgenbLDMBQPDcxYQ==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.8.5",
diff --git a/package.json b/package.json
index 98304b0..0336fb1 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,7 @@
"sass-loader": "^7.3.1",
"vue-loader": "^15.7.1",
"vue-template-compiler": "^2.6.10",
- "webpack": "^4.39.2",
+ "webpack": "^4.39.3",
"webpack-cli": "^3.3.7",
"webpack-merge": "^4.2.2"
}